gpt4 book ai didi

sql - SQL Server 如何对多列进行 UnPivot

转载 作者:行者123 更新时间:2023-12-01 13:34:54 26 4
gpt4 key购买 nike

在我的应用程序中,我使用了如下商店产品描述值:

ID  BILLNO    CUS_NAME     DATE         TOT_BAL  S1 S2  S3  S4      D1  D2  D3  D4      Q1  Q2  Q3  Q4      U1  U2  U3  U4      T1   T2     T3  T4  TOTAL   CUSCODE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
29 1 XXX Apr-03-2017 1932 1 2 3 NULL AAA BBB CCC NULL 6 30 6 NULL 80 35 67 NULL 480 1050 402 0 1932 DF
40 2 YYYY Apr-04-2017 6454 1 2 3 NULL AAA DDD FFF NULL 30 24 50 NULL 80 96 35 NULL 2400 2304 1750 0 6454 MQ
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

我正在将我的应用程序迁移到最新技术,因此我正在重新构建 mt 表以避免复杂化。所以我希望结果是按如下方式调整我的新表:

  BILLNO  CUS_NAME  DATE         TOT_BAL SNO  Pdt  QTY  Unit  Tot  CUSCODE
1 XXX Apr-03-2017 1932 1 AAA 6 80 480 DF
1 XXX Apr-03-2017 1932 2 BBB 30 35 1050 DF
1 XXX Apr-03-2017 1932 3 CCC 6 67 402 DF
2 YYY Apr-04-2017 6454 1 AAA 30 80 2400 MQ
2 YYY Apr-04-2017 6454 2 DDD 24 96 2304 MQ
2 YYY Apr-04-2017 6454 3 FFF 50 35 1750 MQ

我尝试了以下查询,但给出了错误的结果:

我不想要 Null 值。我只需要有有效数据。例如 S4、D4、Q4 是 Null 值,所以输出应该忽略它。

SELECT BILLNO, CUS_NAME,SNOA,SNO,PDTA,PDT
FROM [tmpFormat]
UNPIVOT
(
SNO
FOR SNOA IN (S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17)
) UnPIV
UNPIVOT
(
PDT
FRO PDTA IN (D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15,D16,D17)
) UnPiv1;

最佳答案

尝试交叉应用

SELECT BILLNO, CUS_NAME, UnP.SNOA, UnP.PDTA --,..
FROM [tmpFormat]
CROSS APPLY
( SELECT S1 AS SNOA, D1 as PDTA --,..
UNION ALL
SELECT S2 AS SNOA, D2 as PDTA --,..
-- ..
) UnP

关于sql - SQL Server 如何对多列进行 UnPivot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300613/

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