У меня есть несколько запросов, но я хотел бы иметь только 1 запрос, который запускает все это

#sql #function #parameters

#sql #функция #параметры

Вопрос:

Итак, у меня есть база данных, и я хотел бы выбрать вес, проблема в том, что у меня разные веса, и я хочу знать, могу ли я превратить это в 1 запрос. Вот 2 разных типа веса, которые у меня есть, и что я сделал.

 SELECT TOP (13) height, Sum(total weight) as 'total weight'
FROM dbo.combine
WHERE
FacilityType = 'male'
GROUP BY height
ORDER BY Sum(totalweight) DESC

SELECT TOP (13) height, Sum(total weight) as 'total weight'
FROM dbo.combine
WHERE
FacilityType = 'female'
GROUP BY height
ORDER BY Sum(totalweight) DESC
 

Комментарии:

1. Пожалуйста, укажите соответствующую базу данных.

2. сохраните список типов объектов в таблице.

Ответ №1:

Вы можете использовать GROUP BY и оконные функции:

 SELECT FacilityType, WasteStreamType, tonnes_hh
FROM (SELECT FacilityType, WasteStreamType, Sum(TonnesFromHHSources) as tonnes_hh,
             ROW_NUMBER() OVER (PARTITION BY FacilityType ORDER BY Sum(TonnesFromHHSources) DESC) as seqnum
      FROM dbo.combine c
      GROUP BY FacilityType, WasteStreamType
     ) fw
WHERE seqnum <= 13
 

Комментарии:

1. @Albs. . . (1) Это глупо. Здесь вся необходимая вам информация собрана в одной таблице. Если вам действительно нужно разделить данные, вы можете использовать представления. (2) Ваш вопрос выполняет только select запросы, никаких вставок или создания таблиц. (3) Один оператор SQL в общем случае не может создать несколько разных таблиц.