各位大大好,最近在寫一個LOG排序的Oracle SQL,但是小弟SQL弱弱的,所以請高手救命
SQL語法
SELECT B.NO,B.LOGACTION,B.LOGTIME FROM MAIN A, LOG B WHERE A.NO = B.NO and to_char(A.Time,'yyyy')='2022' ORDER BY B.NO,B.LOGTIME ASC
資料截圖
希望能排列成如下
想請教各位大大
1.如何下Oracle SQL語法才能顯示出圖二的結果
2.因為LOG資料會隨活動增減,要如何橫向將所有LOG都顯示出來?
再麻煩各位大大了,獻上十萬分感謝,跪~~
感謝大師迅速的回覆!
趕緊補上sql
create table Main(
NO varchar2(10), --編號
ITEM varchar2(30), --項目
);
create table LOG(
NO varchar2(10), --編號
LOGACTION varchar2(20), --活動
LOGTIME DATE --日期時間
);
insert into Main (NO, ITEM) values ('A01', '項目1');
insert into Main (NO, ITEM) values ('A02', '項目2');
insert into LOG (NO, LOGACTION, LOGTIME) values ('A01', '轉IT', Datetime.now);
insert into LOG (NO, LOGACTION, LOGTIME) values ('A01', '退回', Datetime.now);
insert into LOG (NO, LOGACTION, LOGTIME) values ('A02', '轉IT', Datetime.now);
insert into LOG (NO, LOGACTION, LOGTIME) values ('A02', '分文', Datetime.now);
insert into LOG (NO, LOGACTION, LOGTIME) values ('A02', '改分', Datetime.now);
弟拜讀了大師的連結,但弟不才試了一下:
select A.Item,B.NO,listagg(LOGTIME||','||LOGACTION||';') within group(order by LOGTIME) LOGS from Main A, LOG B where A.NO=B.NO AND to_char(A.tFillTime,'yyyy')='2022' group by B.NO;
無法顯示資料,系統回覆 "ORA-00979:不是一個GROUP BY表示式",
請問大師弟該怎麼做是好?
萬分感謝~
================= 我是分隔線 ====================
感謝各位大大熱心提供專業的意見,弟銘感五內,說實在的確是長官要求的...><
弟用LISTAGG()的方法做出來了,上面又要求日期格式需顯示年月日時分,DB內存的資料是"2022/1/3 上午 11:42:20"(資料型別是DATE),但是用LISTAGG()取出資料就變成"13-1月 -22"了,請問要如何顯示原本DB內存的日期時間呢?
叩謝各位大大的大恩!
如果這麼無意義的格式都lay的出來
我來預測之後樓主可能的要求:
1.對齊比較好看:不要合併,分成不同欄位
2.要看最新狀態:依時間排序,最新的在最左邊(最前面)
3.對齊比較好看:相同狀態排在同一欄,無該狀態則留空白
4.減少螢幕捲動:若超過螢幕寬度,做個「單筆多列」或「分頁」
我被要求過,而且使用PLSQL拋出html格式,轉發到郵件收發!
大大新春愉快. 別提供這樣多點子.
Oracle 有 mail 的功能
https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_mail.htm#BABFJJBD
更早以前沒這個,只有網路功能,mail部分要自己加工一下.
我以前是習慣會讓Oracle DB 排程產生Statspack report,
然後email出來.這樣就能很方便看到哪些SQL吃掉比較多資源,
進而做優化或是調整.
這裡有篇我寫的PG Event Trigger,使用PL/Python 傳送訊息到
telegram的.
https://hackmd.io/@pgsql-tw/HkLR1yOYO
也有做過Oracle做完備份,發訊息到 LINE,Slack這些.
資料的查詢與展現,最好是分開,例如使用報表軟體等方式來展現會較為靈活.
直轉橫這類需求也一直都會有,其實這裡也出現過不少.
最近幾年 JSON 格式已經列出 ANSI SQL 標準了,所以各大主流DB,
都在完善這方面.之後就可以方便的由DB產生一些JSON格式,後續其他再接手展現.