我有以下数据表:
id displayName stringValue dateValue 59FAA56C-4C0C-456E-BA68-AC63250D6281 用户 SID SID-122 NULL EBD6F18D-3CD3-4134-8FFB-7620D3EA93DF 用户 SID SID2 NULL 59FAA56C-4C0C-456E-BA68-AC63250D6281 用户名 我的用户 NULL EBD6F18D-3CD3-4134-8FFB-7620D3EA93DF 用户名 用户 2 NULL 59FAA56C-4C0C-456E-BA68-AC63250D6281 上次登录 NULL 2012-01-01 EBD6F18D-3CD3-4134-8FFB-7620D3EA93DF 上次登录 NULL 2012-01-10
我想变成:
id [用户 SID] [用户名] [上次登录] 59FAA56C-4C0C-456E-BA68-AC63250D6281 SID-122 我的用户 2012-01-01 EBD6F18D-3CD3-4134-8FFB-7620D3EA93DF SID2 用户 2 2012-01-10
我可以通过使用以下支点来部分工作:
SELECT id, [User SID], [User Name], [Last Login] from
(
select id
, stringValue
, displayName
from #TestTable
) x
pivot
(
MAX(stringValue)
for displayName in ([User SID], [User Name], [Last Login])
) p
除了 lastLogin 被填充为 NULL (这是有道理的,因为它不包含在任何地方的 MAX 中)。
现在,我试图将枢轴更改为:
pivot
(
MAX(ISNULL(stringValue,dateValue))
for displayName in ([User SID], [User Name], [Last Login])
) p
并且:
pivot
(
MAX(CASE WHEN stringValue IS NULL THEN dateValue ELSE stringValue END)
for displayName in ([User SID], [User Name], [Last Login])
) p
但这些都不是有效的sql。关于如何让它正常工作的任何建议?