gpt4 book ai didi

sql - 如何用案例将一列分成两列

转载 作者:行者123 更新时间:2023-12-04 16:03:09 25 4
gpt4 key购买 nike

我有一个表,我想将数据分成多个列,我该怎么做?

enter image description here

我试过这个:

 select a.[batch],a.[Doc_Type],
Soaking Out =
CASE a.[Doc_Type]
WHEN 'BB' THEN 'Soaking Out'
END,

Soaking In =
CASE a.[Doc_Type]
WHEN 'AA' THEN 'Soaking In'
END,

FROM Transaction_Hdr a JOIN Transaction_dtl b
on a.Doc_Number=b.Doc_Number

最佳答案

您的原始查询将输出字符串 'soaking in' 或 'soaking out',但是那些 case 表达式(在 then 之后)需要的是列 [Qty] 并且它是将从 case 表达式 返回的值。

我不知道 [Qty] 来自哪个表,但我假设它是明细表 (b),否则加入该明细表没有多大意义。

SELECT
a.[Doc_Type]
, a.[batch]
, CASE a.[Doc_Type] WHEN 'BB' THEN b.Qty END [soaking out]
, CASE a.[Doc_Type] WHEN 'AA' THEN b.Qty END [soaking in]
FROM Transaction_Hdr a
JOIN Transaction_dtl b ON a.Doc_Number = b.Doc_Number
ORDER BY
a.[Doc_Type]
, a.[batch]

但是“详细信息”表和“标题”表通常表示单个标题的许多行详细信息。所以你可能需要一个 SUM()GROUP BY

SELECT
h.[Doc_Type]
, h.[batch]
, SUM(CASE h.[Doc_Type] WHEN 'BB' THEN d.Qty END) [soaking out]
, SUM(CASE h.[Doc_Type] WHEN 'AA' THEN d.Qty END) [soaking in]
FROM Transaction_Hdr h
JOIN Transaction_dtl d ON h.Doc_Number = d.Doc_Number
GROUP BY
h.[Doc_Type]
, h.[batch]
ORDER BY
h.[Doc_Type]
, h.[batch]

请注意,我现在使用了别名“h”=“header”和“d”=“detail”,因为我真的不喜欢依赖于查询中序列的别名(因为该序列很容易被弄乱).我发现别名更容易通过“表名中每个单词的首字母”或类似方式轻松识别其关联表。

关于sql - 如何用案例将一列分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361178/

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