gpt4 book ai didi

sql - 将分类值透视为 bool 列 SQL

转载 作者:行者123 更新时间:2023-12-04 11:10:49 24 4
gpt4 key购买 nike

我希望“扁平化”我的数据集以促进数据挖掘。
每个分类列应更改为多个 bool 列。
我有一个带有分类值的列,例如:

 ID    col1
1 A
2 B
3 A

我正在寻找一种方法来旋转这个表,并有一个聚合函数告诉我这个 ID 的值是 A 还是 B:

结果:
 ID    col1A    col1B
1 1 0
2 0 1
3 1 0

我尝试使用 PIVOT,但不知道在其中使用哪个聚合函数。

也在SF中寻找答案,但找不到任何...

我正在使用 MS-SQL 2012。

任何帮助,将不胜感激!
暗里

编辑:

col1 中的类别数未知,因此解决方案必须是动态的。
谢谢 :)

最佳答案

尝试这个:

select ID,
col1A=(case when col1='A' then 1 else 0 end),
col1B=(case when col1='B' then 1 else 0 end)
from <table>

如果您有一个同时包含 A 和 B 的 ID,并且您希望在输出中使用不同的 ID,您可以这样做
 select ID,
col1A=max(case when col1='A' then 1 else 0 end),
col1B=max(case when col1='B' then 1 else 0 end)
from <table>
group by id

编辑

根据您的评论,如果您不知道 col1 的选项数量,那么您可以选择动态 PIVOT
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1)
from <table>
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')

set @query = 'SELECT id, ' + @cols + ' from <table>

pivot
(
count([col1])
for col1 in (' + @cols + ')
) p '
print(@query)
execute(@query)

SQL Fiddle Demo

关于sql - 将分类值透视为 bool 列 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049056/

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