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
的值 barcode1
和 barcode2
。
但是您将以 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
我正在尝试 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
的值 barcode1
和 barcode2
。
但是您将以 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