首页 > 解决方案 > 如何使用 SQL Server 将垂直行转换为列数据

问题描述

如何将 SQL Server 表的垂直行记录转换为列数据。我尝试了一些查询,但无法达到结果。

我有一个名为的表TRANSACTIONLOG,它有三列

CREATEDATE, TRANSACTION, COUNTS

表记录

我需要对记录进行 GROUPCREATEDATE并将交易类型显示为一列,并将 COUNTS 作为其值。

下面是结果应该是什么样子 -

输出结果

标签: sqlsql-server

解决方案


这很容易通过一些条件聚合来实现。

SELECT CREATEDATE
    , [INSERT] = MAX(case when [TRANSACTION] = 'INSERT' then COUNTS end)
    , [UPDATE] = MAX(case when [TRANSACTION] = 'UPDATE' then COUNTS end)
    , [DELETE] = MAX(case when [TRANSACTION] = 'DELETE' then COUNTS end)
FROM TRANSACTIONLOG
GROUP BY CREATEDATE
ORDER BY CREATEDATE

推荐阅读