首页 > 解决方案 > 我有多个查询,但我希望只有 1 个查询可以运行所有查询

问题描述

所以我有一个数据库,我想选择权重,问题是我有不同的权重,我想知道我是否可以把它变成 1 个查询。这是我拥有的两种不同的重量类型以及我所做的。

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

标签: sqlfunctionparameters

解决方案


您可以使用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

推荐阅读