我有当前的数据是这样的: 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可用,例如,您是否尝试过使用它?使用格式化文本,而不是图像也更好。 –