gpt4 book ai didi

tsql - SQL 将行转换为列

转载 作者:行者123 更新时间:2023-12-05 00:07:47 25 4
gpt4 key购买 nike

我知道这之前曾被问过几次,但我找不到任何适合我的例子的解决方案。

我目前有一个用户权限表来使用某些页面。该表将如下所示:

UserID    pagename         pageid
-----------------------------------
1 home 1
1 contacts 3
3 home 1
2 links 2

我将如何根据这些数据生成一个表格,其中我将所有页面名称作为列列出,表格的每一行都用于用户 ID,列值显示 0 或 1,具体取决于原始表格是否有条目该特定页面,例如:
UserID     home     links    contacts
-------------------------------------
1 1 0 1
2 0 1 0
3 1 0 0

非常感谢您的帮助!

最佳答案

在@t 中构建您的表:

declare @t as table (UserID int, pagename nvarchar(20), pageid int);
insert into @t values (1,'home',1),(1,'contacts',3),(3,'home',1),(2,'links',2);

旋转它:
select UserID, 
case when home is null then 0 else 1 end as home,
case when links is null then 0 else 1 end as links,
case when contacts is null then 0 else 1 end as contacts
from @t
pivot (
max(pageid) for pagename in ([home],[links],[contacts])
) pivotT

UserID home links contacts
----------- ----------- ----------- -----------
1 1 0 1
2 0 1 0
3 1 0 0

关于tsql - SQL 将行转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1768586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com