如圖 假如表中存在前四行資料,將要合并成兩行資料,并且將相同欄位的不同值 組成新的列來顯示資料(如圖,后5列的值不同)該如何實作。
uj5u.com熱心網友回復:
預期結果 是什么樣的?uj5u.com熱心網友回復:
station_id , device_id , box_type_name ,box_id ,tick_num1 ,ticknum2 ,oper_type_name1,oper_type_name2 ......
這樣,很難理解我的問題嗎
uj5u.com熱心網友回復:
以前4列為基準 合并相同的資料行,后面5列 的不同值 分別各增加一列來表示資料,最后的效果是 得到14列的值,也就是說在同一地點同一臺設備上做了兩次操作,把這兩次操作寫在一行里。
uj5u.com熱心網友回復:
前4列相同的一定兩條嗎,只有一條呢,有N條呢
這兩條的后5列,弄成: 列1(1) 列1(2) 。。。 列5(1) 列5(2),哪條在前沒有順序要求
uj5u.com熱心網友回復:
目前假設前4列值存在兩條重復資料,后面的列按照 卸下和安裝 的型別先后顯示,
列1(1) 列1(2) 。。。 列5(1) 列5(2)
列1 安裝的數量(1) 列1 卸下的數量(2) 。。。 列5安裝的時間(1) 列5卸下的時間(2)
uj5u.com熱心網友回復:
SELECT R1. station_id,R1.device_id ,R1.box_type_name ,R1.box_id,R1.tick_num1,R2.tick_num1......
(SELECT * FROM (
SELECT T1.*,ROW_NUMBER()OVER(PATITION BY station_id , device_id , box_type_name ,box_id ) RN FROM T1) WHERE RN=1) R1 JOIN
SELECT * FROM (
SELECT T1.*,ROW_NUMBER()OVER(PATITION BY station_id , device_id , box_type_name ,box_id ) RN FROM T1) WHERE RN=2) R2
ON ......
uj5u.com熱心網友回復:
SQL 在這里 ,哪位大師 試試 。SQL檔案地址http://w698-1251478258.costj.myqcloud.com/%E5%A4%9A%E8%A1%8C%E5%90%88%E5%B9%B6%E9%87%8D%E5%A4%8D%E5%80%BC%E8%BD%AC%E5%88%97.sql
Excel檔案地址http://w698-1251478258.costj.myqcloud.com/12.xlsx
uj5u.com熱心網友回復:
-- 你這太長了,寫了個簡單的例子
WITH a AS
(SELECT 1 c1, 'a' c2, 1 c3 FROM dual
UNION ALL
SELECT 1 c1, 'b' c2, 2 c3 FROM dual
UNION ALL
SELECT 2 c1, 'c' c2, 1 c3 FROM dual
UNION ALL
SELECT 2 c1, 'd' c2, 3 c3 FROM dual)
SELECT
c1,
max(CASE WHEN rnum = 1 THEN c2 END ) c2_1,
max(CASE WHEN rnum = 2 THEN c2 END ) c2_2,
max(CASE WHEN rnum = 1 THEN c3 END ) c3_1,
max(CASE WHEN rnum = 2 THEN c3 END ) c3_2 FROM
(
SELECT a.*, row_number() OVER(PARTITION BY c1 ORDER BY c2) rnum FROM a
) a1
GROUP BY c1;
C1 C2_1 C2_2 C3_1 C3_2
---------- ---- ---- ---------- ----------
1 a b 1 2
2 c d 1 3
[/code]
uj5u.com熱心網友回復:
-- 你這太長了,寫了個簡單的例子
WITH a AS
(SELECT 1 c1, 'a' c2, 1 c3 FROM dual
UNION ALL
SELECT 1 c1, 'b' c2, 2 c3 FROM dual
UNION ALL
SELECT 2 c1, 'c' c2, 1 c3 FROM dual
UNION ALL
SELECT 2 c1, 'd' c2, 3 c3 FROM dual)
SELECT
c1,
max(CASE WHEN rnum = 1 THEN c2 END ) c2_1,
max(CASE WHEN rnum = 2 THEN c2 END ) c2_2,
max(CASE WHEN rnum = 1 THEN c3 END ) c3_1,
max(CASE WHEN rnum = 2 THEN c3 END ) c3_2 FROM
(
SELECT a.*, row_number() OVER(PARTITION BY c1 ORDER BY c2) rnum FROM a
) a1
GROUP BY c1;
C1 C2_1 C2_2 C3_1 C3_2
---------- ---- ---- ---------- ----------
1 a b 1 2
2 c d 1 3
[/code]
你這個 好像不行吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/100788.html
標籤:開發
