我有當前的數據是這樣的:
image1
拆分數據
我有數據作爲image 1
我想要的數據是如下修改這樣
image2
我想要的輸出作爲image 2
Oracle SQL Developer中使用SQL查詢。一個訂單ID的付款方式的副本應該放在不同的列中。
我有當前的數據是這樣的:
image1
拆分數據
我有數據作爲image 1
我想要的數據是如下修改這樣
image2
我想要的輸出作爲image 2
Oracle SQL Developer中使用SQL查詢。一個訂單ID的付款方式的副本應該放在不同的列中。
你好。我假設你基本上在Oracle版本上工作。 我試圖在下面的代碼片段中複製場景。希望這個 幫助。
SELECT a.id,
a.ord_id,
a.price,
SUBSTR(wmsys.wm_concat(a.attr),1,instr(wmsys.wm_concat(a.attr),',',1)-1) att1,
SUBSTR(wmsys.wm_concat(a.attr),instr(wmsys.wm_concat(a.attr),',',1) +1,LENGTH(wmsys.wm_concat(a.attr))) att2
FROM
(SELECT '[email protected]' AS id,
1 AS ord_id,
1000 price,
'master_card' attr
FROM dual
UNION ALL
SELECT '[email protected]' AS id, 1 AS ord_id,1000 price,'Other' attr FROM dual
UNION ALL
SELECT '[email protected]' AS id, 2 AS ord_id,1060 price,'aramax' attr FROM dual
UNION ALL
SELECT '[email protected]' AS id, 2 AS ord_id,1060 price,'fedex' attr FROM dual
)a
GROUP BY a.id,
a.ord_id,
a.price;
----------------------------------OUTPUT---------------------------------
ID ORD_ID PRICE ATT1 ATT2
[email protected] 1 1000 master_card Other
[email protected] 2 1060 aramax fedex
----------------------------------output-------------------------------------
SELECT RegistrationId,
OrderId,
TotalPrice,
MAX(CASE rn WHEN 1 THEN online_attribute1 END) AS online_attribute1,
MAX(CASE rn WHEN 2 THEN online_attribute1 END) AS online_attribute2,
MAX(CASE rn WHEN 3 THEN online_attribute1 END) AS online_attribute3
SELECT RegistrationId,
OrderId,
TotalPrice,
online_attribute1,
ROW_NUMBER()
OVER (PARTITION BY RegistrationId, OrderId, TotalPrice
ORDER BY NULL) AS rn
FROM Data
)
GROUP BY RegistrationId, OrderId, TotalPrice
非常感謝您的回答 – Aaa
哪些DBMS你真的使用。你不應該只標記所有這些。 –
Oracle - sqldeveloper – Aaa
SQL Developer是一個客戶端IDE。如果您使用它來訪問Oracle數據庫,則標記爲[tag:oracle]和[tag:sql]。 Oracle的版本(假設它實際上)也很重要;數據透視從11g可用,例如,您是否嘗試過使用它?使用格式化文本,而不是圖像也更好。 –