我需要传输以下数据集:
其中只有突出显示的行是感兴趣的行(Tag in('LN','SN')),因为我只对产品的SerialNumber和LotNumber感兴趣。 我想将上面的数据集转换为以下数据集:
它列出产品及其序列号和批号在一行中。
在线阅读之后,我认为PIVOT可能就是我需要的。但是,我正在努力处理声明的技术方面。
我试过了:
well
但这不会产生我想要的输出。有什么建议吗? PIVOT是正确使用的语句还是在这种情况下是否有其他更合适的陈述?我意识到PIVOT需要一个聚合函数,但我不计算或添加任何东西。请指教。
下面是我的测试表及其数据
select * from (
select * from TEST2 where tag in ('LN','SN')
)
PIVOT
(
max(value)
for tag in ('LN','SN')
)
order by category,subcat,item,"Date"
答案 0 :(得分:3)
您没有对描述做任何事情,这也随着标记而变化。它没有被聚合,所以它在隐含的'组中,因此您在结果集中获得了单独的行。
您也可以使用其他(虚拟)聚合来捕获它:
select * from (
select * from TEST2 where tag in ('LN', 'SN')
)
PIVOT
(
max(value) as value, max(description) as description
for tag in ('LN' as ln, 'SN' as sn)
)
order by category, subcat, item, "Date";
Date SUBCAT CATEGOR IT LN_VALUE LN_DESCRIPTION SN_VALUE SN_DESCRIPTION
--------- ------ ------- -- ----------------- --------------- ----------------- ---------------
24-OCT-13 290223 1219576 25 1105618 Lot Number 3x12mm Serial Number
24-OCT-13 290223 1219576 28 1303757 Lot Number
18-JUN-15 354506 1219576 4 1403114 Lot Number
18-JUN-15 354506 1219576 9 7777777777 Lot Number 9.999999999999E12 Serial Number
或者更有可能通过指定您想要的列而不是使用*
将其从中间结果集中排除(如果您不想要它):
select * from (
select category, subcat, item, "Date", tag, value
from TEST2 where tag in ('LN', 'SN')
)
PIVOT
(
max(value) for tag in ('LN' as ln, 'SN' as sn)
)
order by category, subcat, item, "Date";
CATEGOR SUBCAT IT Date LN SN
------- ------ -- --------- ----------------- -----------------
1219576 290223 25 24-OCT-13 1105618 3x12mm
1219576 290223 28 24-OCT-13 1303757
1219576 354506 4 18-JUN-15 1403114
1219576 354506 9 18-JUN-15 7777777777 9.999999999999E12
答案 1 :(得分:0)
with a as (select to_char(xmltype.getclobval(JOB_XML)) k from (
select * from (select ename,job from emp)
pivot xml ( max(ename) for job in (select job from emp))))
SELECT EXTRACTVALUE(VALUE(xml_list), '//column[1]') AS interface_no
,EXTRACTVALUE(VALUE(xml_list), '//column[2]') AS interface_name_a
FROM TABLE(XMLSEQUENCE(EXTRACT(XMLType('<?xml version="1.0" encoding="UTF-8"?>'||(select * from a) ), 'PivotSet/item'))) xml_list;