我试图将数据作为列返回。
我已经编写了这个unpivot和pivot查询:
`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;`
但问题只是"条码2"字段返回一个值(条形码字段在实际存在值时返回null。
示例数据
我有一个名为RTLBarCode的表 它有一个名为Barcode的字段和一个名为StockItemCode
的字段对于StockItemCode = 10我有2行,条形码值为5014721112824和0000000019149。
谁能看到我哪里出错了?
非常感谢
答案 0 :(得分:0)
您正在将您的条形码编入索引。
这会产生col
's值barcode1
和barcode2
。
但是你转而使用barcode
代替barcode1
。找不到任何值,汇总返回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