【发布时间】:2020-08-16 11:20:45
【问题描述】:
Oracle SQL 中的以下查询为我提供了一个由 ID、Key、Value 组成的表。我想将键转换为列,将值转换为列值,同时保持 ID 作为行的 ID。我尝试了 PIVOT 查询。但我收到一个错误 - ORA-00933: SQL 命令未正确结束。
初始 SQL
SELECT * FROM API.publisher_message_queue_detail
WHERE message_seq_id
IN (SELECT message_seq_id FROM API.publisher_message_queue WHERE status='N' AND MESSAGE_TYPE='RetailerNewConnection') ;
结果表
我想将此表转换为
我尝试过的 PIVOT 查询
SELECT * FROM API.publisher_message_queue_detail
WHERE message_seq_id IN
(SELECT message_seq_id FROM API.publisher_message_queue WHERE status='N' AND MESSAGE_TYPE='RetailerNewConnection')
PIVOT(
COUNT(message_seq_id)
FOR MSG_KEY
IN (
'MobileNo',
'ActivatedDate',
'ActSimNo',
'ActActdevice',
'PmsProfileID',
'PaymentMode',
'AgentCode',
'ActPrePost',
'Sbu',
'Channel',
'SalesPath',
'OrderId'
)
)
;
但是,我收到以下错误。我的错误是什么?
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 10 Column: 5
【问题讨论】:
-
你可以粘贴数据而不是图像。
-
你不应该使用 * 但只有你想要的列和任何不属于 PIVOT 的列将被分组并显示为一行。
-
如果您选择的是计数,您希望如何生成所需输出列中的“值”?暂时不管你的问题的其他一切,想想这个简单的问题。
标签: sql oracle pivot pivot-table oracle-sqldeveloper