鍍金池/ 問答/Java  數(shù)據(jù)庫/ sql數(shù)據(jù),列轉行

sql數(shù)據(jù),列轉行

查詢結果如下圖,顯示不太方便,希望將同一個地市昨天和前天的并排成一行,
比如701 20180224 8438 20180225 7631 這樣顯示
clipboard.png

代碼如下

select b.loc_id,to_char(a.finish_time,'yyyymmdd'),COUNT(1) 
from tpss.tpss_l_order_item_flag PARTITION(p201802) a,tpss.tb_loc_latn_info b
WHERE  a.finish_time >=trunc(SYSDATE-2,'dd')  --前天
AND a.finish_time <trunc(SYSDATE,'dd')    --昨天
and a.lan_id=b.lan_id
GROUP BY a.lan_id,to_char(a.finish_time,'yyyymmdd'),b.loc_id
ORDER BY b.loc_id,to_char(a.finish_time,'yyyymmdd');

請懂得朋友回答下,謝謝。

回答
編輯回答
落殤

固定的列轉換比較簡單,在原有的查詢語句上包一層就行了,如:

with t_result as 
    select b.loc_id,a.finish_time, COUNT(1) as loc_count
    from tpss.tpss_l_order_item_flag PARTITION(p201802) a,tpss.tb_loc_latn_info b
    WHERE  a.finish_time >=trunc(SYSDATE-2,'dd')  --前天
    AND a.finish_time <trunc(SYSDATE,'dd')    --昨天
    and a.lan_id=b.lan_id
    GROUP BY a.lan_id,to_char(a.finish_time,'yyyymmdd'),b.loc_id
    ORDER BY b.loc_id,to_char(a.finish_time,'yyyymmdd')
select loc_id, max(finish_time_2), max(loc_count_1), max(finish_time_1), max(loc_count_1)
from (
    select loc_id, 
    decode(trunc(finish_time), trunc(sysdate-2), finish_time, null) as finish_time_2,
    decode(trunc(finish_time), trunc(sysdate-2), loc_count, null) as loc_count_2,
    decode(trunc(finish_time), trunc(sysdate-1), finish_time, null) as finish_time_1,
    decode(trunc(finish_time), trunc(sysdate-1), loc_count, null) as loc_count_1,
    from t_result
 ) group by loc_id
2018年8月22日 00:45
編輯回答
鐧簞噯

用了幾個高端的函數(shù)

》點這里《

2018年1月31日 22:49
編輯回答
失心人

這個我建議可以用后端語言把數(shù)據(jù)查詢出來以后再拼一個數(shù)組就可以了

2018年5月26日 15:50