gpt4 book ai didi

sql - 如何将列变成行

转载 作者:行者123 更新时间:2023-12-02 08:52:12 24 4
gpt4 key购买 nike

如果我有一个看起来像这样的表:

    ID int
Name varchar
City1 varchar
City2 varchar
City3 varchar
State1 varchar
State2 varchar
State3 varchar

我理解正常的 SELECT 语句会返回如下数据:

    ID, Name, City1, City2, City3, State1, State2, State3

但是我如何返回 SELECT 语句以将多个城市/州返回到不同的行中,并将它们分组......所以它看起来像这样:

    ID, Name, City, State

而不是这些列:Color1、Color2、Color3 和 State1、State2、State3

如果 1,2,3 不为空,它们将只是 SELECT 语句中的更多行,其中所有其他数据保持不变。

关于如何使用最少的代码来解决这个问题有什么建议吗?最好是一个 SELECT 语句来处理这一切?

最佳答案

您可以查询您的表三次并使用union all 合并结果。

select ID, Name, City1 as City, State1 as State
from YourTable
union all
select ID, Name, City2, State2
from YourTable
union all
select ID, Name, City3, State3
from YourTable

您也可以使用交叉连接和几个 case 语句在一个查询中执行此操作。

select ID, 
Name,
case T.N
when 1 then City1
when 2 then City2
when 3 then City3
end as City,
case T.N
when 1 then State1
when 2 then State2
when 3 then State3
end as State
from YourTable
cross join (values(1),(2),(3)) as T(N)

关于sql - 如何将列变成行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701404/

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