[英]Pivoting a table with one row in SQL
我有一份每周报告,我必须在其中分享我们的表现。 我有以下查询
SELECT COUNT(*) AS Transactions,
COUNT(DISTINCT id) as Customers,
SUM(CASE WHEN Product in ('Paper','Pen','Eraser') THEN 1 ELSE 0 END) School_Supplies,
SUM(CASE WHEN Product in ('Paper','Pen','Eraser') THEN Payment ELSE 0 END) AS School_Supplies_Revenue
FROM dbo.Transactions
这给了我桌子
Transactions | Customers | School_Supplies | School_Supplies_Revenue
12845 | 9654 | 1546 | 8745
我希望 pivot 的表格看起来像这样
KPI | Value
Transactions | 12845
Customers | 9654
School_Supplies | 1546
School_Supplies_Revenue | 8745
我尝试使用 UNPIVOT,但它不起作用。 我怎样才能 pivot 这个表使列名及其各自的值成为数据点?
我的数据库如下所示:
[ID] | [Product] | [Cost per Item] | [Payment] | [Transaction Date]
001 | Paper | 2.15 | 5.54 | 2021-01-12
在 SQL 服务器中,可能apply
最简单的方法:
SELECT v.*
FROM (SELECT COUNT(*) AS Transactions,
COUNT(DISTINCT id) as Customers,
SUM(CASE WHEN Product in ('Paper','Pen','Eraser') THEN 1 ELSE 0 END) as School_Supplies,
SUM(CASE WHEN Product in ('Paper','Pen','Eraser') THEN Payment ELSE 0 END) AS School_Supplies_Revenue
FROM dbo.Transactions t
) t CROSS APPLY
(VALUES ('Transactions', Transactions),
('Customers', customers),
('School_Supplies', School_Supplies),
('School_Supplies_Revenue', School_Supplies_Revenue)
) v(kpi, value);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.