【发布时间】:2020-10-01 21:49:41
【问题描述】:
我在 SQL Server 2016 中透视表时遇到问题。请考虑以下数据/查询
WITH DATA1 AS
(
SELECT 123 cid, 'test' cname, '2020-03-17' dt, 'BELLE' fc, 3782703 mn union all
SELECT 123 cid, 'test' cname, '2020-03-12' dt, 'WOO' fc, 25679 mn union all
SELECT 345 cid, 'test2' cname, '2019-03-17' dt, 'king' fc, 3782703 mn union all
SELECT 345 cid, 'test2' cname, '2019-03-12' dt, 'east' fc, 25679 mn union all
SELECT 111 cid, 'test3' cname, '2019-02-12' dt, 'east' fc, 2 mn
)
select *
from DATA1
PIVOT (
MAX(mn) FOR fc IN (
[BELLE]
,[WOO]
,[KING]
,[EAST]
)
) a
我正在尝试以 dt 和 mn 为中心来获取 fc 中的值。所以基本上我正在寻找这个输出。
cid cname fc1_dt fc1_name fc1_mn fc2_name fc2_dt fc2_mn
123 test 2020-03-17 BELLE 3782703 woo 2020-03-12 25679
345 test2 2019-03-17 king 37 east 2019-03-12 25
111 test3 2019-02-12 east 2
我试图像这样添加到max 函数,但它不起作用
PIVOT (
MAX(mn),max(dt) FOR fc IN (
[BELLE]
,[WOO]
,[KING]
,[EAST]
)
) a
有人可以帮忙修改我的查询以产生上面的输出吗?
【问题讨论】:
标签: sql sql-server datetime pivot window-functions