SQL 多个 GROUP BY 表示在单行中

标签 sql sql-server

此问题是在 SQL Server 环境中提出的。我在这里找到了一些创建包含多个 GROUP BY 条件的查询的建议,但所有建议都根据第二组条件生成多行。例如,如果 TrendingData 表中的数据集如下所示:

ID  SEND    HL7 MessageControl                              STAT    DATE CREATED            DATE UPDATED
4   AMC1    A03 A03918604B6-4272-40E6-9178-1D711FB135461    P       2015-12-15 12:01:19.153 2015-12-15 12:01:20.137
5   AMC1    A08 A08918604B6-4272-40E6-9178-1D711FB135462    P       2015-12-15 12:01:20.137 2015-12-15 12:01:20.153
6   UHC1R   A08 A0893126369-10D1-4506-9A42-B9A7E0AC96151    R       2015-12-15 12:01:34.433 2015-12-15 12:01:34.497
7   UHC1R   A03 A03C2468021-8C66-4BAD-A6A7-CBCA02125D411    R       2015-12-15 12:02:38.293 2015-12-15 12:02:38.450
8   UHC1R   A08 A08C2468021-8C66-4BAD-A6A7-CBCA02125D412    P       2015-12-15 12:02:38.450 2015-12-15 12:02:38.760
9   UHC1    A08 A0863D0A3D8-402C-4377-9C77-63518A42A11D1    P       2015-12-15 12:02:42.730 2015-12-15 12:02:43.057

然后是查询结果

SELECT  
    COUNT(*) AS Counts,
    STAT,
    CONVERT(CHAR(5), DateCreated, 10) AS Date
FROM
    TrendingData
GROUP BY 
    STAT, CONVERT(CHAR(5), DateCreated, 10)
ORDER BY 
    Date;

返回如下输出(这些数字来自整个表的数据集,而不仅仅是上面的几行):

Counts  STAT    Date
4488    P       12-15
27568   R       12-15

但我更希望得到如下所示的输出:

Total   CodeP   CodeR   Date
32056   4488    27568   12-15

我相当确定 CodeP 列将由来自 TrendingDate 的 count(*) 的某些变体填充,其中 STAT = 'P',但我可以'似乎没有正确的语法让查询在同一日期内提取三个计数。

建议?

最佳答案

您所需要做的就是在 COUNT 聚合函数中为 PR 使用 CASE 语句> 计数,并从 GROUP BY 中删除 STAT 列:

SELECT  COUNT(*) AS Total,
        COUNT(CASE WHEN stat = 'P' THEN 1 END) AS CodeP,
        COUNT(CASE WHEN stat = 'R' THEN 1 END) AS CodeR,
        CONVERT(CHAR(5), DateCreated, 10) AS Date
FROM    TrendingData
GROUP BY CONVERT(CHAR(5), DateCreated, 10)
ORDER BY Date; 

关于SQL 多个 GROUP BY 表示在单行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34501263/

相关文章:

c# - 更新 EF 4.1 中的记录

mysql - <=>运算符是什么意思,sql?

SQL如何使作业运行?

php - ORDER BY RAND()函数需要很长时间才能在mysql中执行

c# - 如何从 C# WinForms 应用程序判断 SQL Server 自动升级是否成功

SQL Server 查询列包含 id 列表

sql-server - 无法绑定(bind)多部分标识符

python - Django 模型 .get 失败,但 .filter 和 .all 有效 - 对象存在于数据库中

sql-server - SQL 错误 - 必须声明表变量 "@tablename"

sql - 通过将文本与字符集进行比较来替换文本中的关键字