Unpivot 和 Pivot 没有 return 数据

Unpivot and Pivot does not return data

我正在尝试 return 数据作为列。

我已经写了这个反透视和透视查询:

`select StockItemCode, barcode, barcode2 from (select StockItemCode, col+cast(seq as varchar(20)) col, value   from  (
select 
  (select min(StockItemCode) 
   from RTLBarCode t2
   where t.StockItemCode = t2.StockItemCode) StockItemCode, 
  cast(BarCode as varchar(20)) barcode, 
     row_number() over(partition by StockItemCode order by StockItemCode) seq
from RTLBarCode t) d  unpivot(
value
for col in (barcode)  ) unpiv) src pivot (  max(value)  for col in (barcode, barcode2)) piv;`

但问题是只有 "Barcode2" 字段正在 return 值(条形码字段 return 是一个空值,而实际上有一个值。

样本数据

我有一个 Table 叫做 RTLBarCode 它有一个名为 Barcode 的字段和一个名为 StockItemCode

的字段

对于 StockItemCode = 10,我有 2 行条码值为 5014721112824 和 0000000019149。

谁能看出我错在哪里?

非常感谢

您正在为 unpiv 中的条形码编制索引。 这导致 col 的值 barcode1barcode2

但是您将以 barcode 而不是 barcode1 为中心。未找到任何值,聚合 returns null.

正确的说法是:

select StockItemCode, barcode1, barcode2 from 
(
    select StockItemCode, col+cast(seq as varchar(20)) col, value   
    from  
    (
        select 
                (select min(StockItemCode)from RTLBarCode t2 where t.StockItemCode = t2.StockItemCode) StockItemCode,  
                cast(BarCode as varchar(20)) barcode, 
                row_number() over(partition by StockItemCode order by StockItemCode) seq
        from RTLBarCode t
     ) d  
     unpivot(value for col in (barcode)) unpiv
) src 
pivot (max(value) for col in (barcode1, barcode2)) piv