gpt4 book ai didi

sql-server - 以不同的方式显示数据

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

所以我有一个绑定(bind) ProductId 和 GroupId 的表。该产品可以分配给所有 5 个组 (1-5)。
如果产品不存在于表中,则不会将其分配给任何组

ProductId | GroupId
-------------------
100 | 1
100 | 2
200 | 1
200 | 2
200 | 3
200 | 4
200 | 5

看一下这张表,我们知道 ID 为 100 的产品被分配到 2 个组 (1,2),而 ID 为 200 的产品被分配到 5 个组 (1-5)。

我正在尝试编写一个查询,该查询将在单独的行中显示每个产品,以及所有 5 个组的列和一个包含产品是否属于该组的信息的位值 (0,1)。我需要的结果的可视化:
ProductId | IsGroup1 | IsGroup2 | IsGroup3 | IsGroup4 | IsGroup5
-----------------------------------------------------------------
100 | 1 | 1 | 0 | 0 | 0 -- this belongs to groups 1, 2
200 | 1 | 1 | 1 | 1 | 1 -- this belongs to all of the groups

我知道我可能可以在每个不同的产品上使用自我加入 5 次来解决它,但我想知道是否有更优雅的解决方法?

任何提示将不胜感激

最佳答案

您可以使用枢轴。由于您只有 5 个组,因此您不需要动态支点。

DB FIDDLE

select
ProductId
,IsGroup1 = iif([1] is null,0,1)
,IsGroup2 = iif([2] is null,0,1)
,IsGroup3 = iif([3] is null,0,1)
,IsGroup4 = iif([4] is null,0,1)
,IsGroup5 = iif([5] is null,0,1)
from
(select ProductID, GroupId from mytable) x
pivot
(max(GroupId) for GroupId in ([1],[2],[3],[4],[5])) p

关于sql-server - 以不同的方式显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60973960/

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