我想找回一些報告數據SELECT查詢到的所有記錄
這個返回值是我的查詢:
SELECT sourceCode as "Source", to_char(myTimestamp, 'YYYY-MM-DD') as "Date", statusCode as "Status", count(*) as "Count"
FROM archive_table
WHERE myTimestamp BETWEEN TO_TIMESTAMP('2013-09-30','yyyy-mm-dd') AND TO_TIMESTAMP('2013-10-05','yyyy-mm-dd')
GROUP BY sourceCode, to_char(myTimestamp, 'YYYY-MM-DD'), statusCode
ORDER BY 1, 2, 3
這是輸出:
Source Date Status Count
Source1 9/30/2013 C 10
Source1 10/1/2013 C 8
Source1 10/2/2013 C 24
Source1 10/2/2013 O 4
Source2 10/4/2013 C 22
Source2 10/4/2013 O 7
Source3 10/1/2013 C 2
Source4 9/30/2013 C 15
Source4 9/30/2013 O 15
Source4 10/1/2013 C 24
Source4 10/1/2013 O 12
我會喜歡看所有的計數爲0,例如Source1與日期9/30/2013在數據庫中沒有狀態0,所以我想要它顯示:
Source1 9/30/2013 O 0
另一個例子,現在有源2在所有的2013年9月30日,所以應該顯示:
Source2 9/30/2013 O 0
Source2 9/30/2013 C 0
林希望有一個簡單的方法來做到這一點。有關其他信息,只有4個「來源」,狀態是「O」或「C」,顯然日期範圍在where子句中提供。
有可能做到這一點更簡單的方法,但我並不十分熟悉Oracle的細微差別,因爲我主要使用SQL Server。至少,這是有效的,也許有人會帶來更優雅的答案。 –
Derek有沒有辦法將您的交叉連接留在另一個查詢中?類似於(左連接交叉連接的結果)x左連接(我自己的查詢的結果)y on x.source = y.source ...等我昨晚在玩它,我一直在犯錯誤 - 我想我只知道如何加入到現有的表 – Kairan
我的查詢確實如此。看到最後一個連接,它做一個左連接「測試」 –