仅当其中一列 = 1 时,如何将列转换为行?
Posted
技术标签:
【中文标题】仅当其中一列 = 1 时,如何将列转换为行?【英文标题】:How do I convert columns to rows only if one of the columns = 1? 【发布时间】:2021-08-08 23:27:59 【问题描述】:我正在按照本指南在 T-SQL 中将列转换为行:https://blog.devart.com/is-unpivot-the-best-way-for-converting-columns-into-rows.html
但是,只有当其中一列设置为 1 时,我才需要进行转换。
表格:
item milk peanut soy
A 1 1 0
B 0 0 1
C 0 0 0
想要的结果:
item allergen
A milk
A peanut
B soy
请注意,我故意遗漏了项目 C
。这是因为所有过敏原列都不是1
,因此在最终表中不需要。我该如何做到这一点?
【问题讨论】:
【参考方案1】:您可以使用cross apply
和过滤:
select t.item, v.allergen
from t cross apply
(values ('milk', milk), ('peanut', peanut), ('soy', soy)
) v(allergen, flag)
where flag = 1;
【讨论】:
以上是关于仅当其中一列 = 1 时,如何将列转换为行?的主要内容,如果未能解决你的问题,请参考以下文章