gpt4 book ai didi

SQL : Split one row into two rows depending on column

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

如果这是重复的,我很抱歉。请指出我正确的问题。我使用的是 SQL SERVER 2008。我使用下面的查询,因为我需要从 3 个表中获取数据。

SELECT qc.FileID as [FileID],    
qc.QID1 as [QID1],
xqs.SID1 as [SID1],
xqc.CID1 as [CID1],
xqs.Comments as [SComments],
xqc.Comments as [CComments]
FROM QCTable(nolock) qc
JOIN QCSectionTable (nolock) xqs ON qc.QCID = xqs.QCID
LEFT JOIN QCChargeTable (nolock) xqc ON xqc.QCXrefID = xqs.QCXrefID

对于上面我得到这个
FieID1 SID1 SID1 CID1 SComments CComments

我有一排像下面
FileID1  QID1 SID1 CID1 SComments  CComments

我需要将上面的行拆分为
FileID1 QID1 SID1 null SComments
FileID1 QID1 SID1 CID1 CComments

提前致谢。

最佳答案

最简单的方法是union all :

select FileID1, QID1, SID1, null as cId1, SComments
from table t
union all
select FileID1, QID1, SID1, cId1, CComments
from table t;

如果您有大量数据,使用 cross apply 执行此操作会更快一些或 cross join :
select v.*
from table t cross apply
(values (FileID1, QID1, SID1, null, SComments),
(FileID1, QID1, SID1, cId1, CComments)
) v(FileID1, QID1, SID1, cId1, CComments);

优点是这只会扫描表一次。

关于SQL : Split one row into two rows depending on column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809426/

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