我有兩個查詢,我需要左加入第一個與第二個。目的是將所有這些內容都包含在其他更大的內容中。我同時得到了第一個和第二個查詢,但無法讓他們加入。使用ON或USING加入兩個子查詢
首先查詢:
SELECT *
FROM (
SELECT Source as system, DT as ts, Status as statusCode
FROM (
(SELECT 'SOURCE1' Source FROM Dual
UNION SELECT 'SOURCE2' FROM Dual
UNION SELECT 'SOURCE3' FROM Dual
UNION SELECT 'SOURCE4' FROM Dual
) system
CROSS JOIN (
SELECT
TO_DATE('09-30-2013','MM-DD-YYYY') - 1 + LEVEL dt
FROM dual
CONNECT BY
LEVEL <= (TO_DATE('10/05/2013','MM/DD/YYYY')
- TO_DATE('09/30/2013','MM/DD/YYYY')) + 1
) ts
CROSS JOIN (
SELECT 'O' Status FROM Dual
UNION SELECT 'C' FROM Dual
) statusCode
)--For some reason cannot name this so need to wrap in another select *
)Duals
第二個查詢:(會有一個LEFT JOIN)之間在這裏
LEFT JOIN
受審
Select * FROM(
SELECT myTable1.system, TO_CHAR(maxResults.ts,'YYYY-MM-DD') as ts, myTable1.statusCode
FROM (
SELECT table_id, MAX(ts) as ts
FROM myTable1_history
WHERE ts BETWEEN TO_TIMESTAMP('2013-09-29','yyyy-mm-dd') AND TO_TIMESTAMP('2013-10-06','yyyy-mm-dd')
GROUP BY table_id)maxResults
JOIN myTable1
ON maxResults.table_id = myTable1.table_id
WHERE myTable1.statusCode = 'C'
UNION ALL
SELECT myTable1.system as "system", TO_CHAR(myTable1.ts,'YYYY-MM-DD') as "ts", 'O' as "statusCode"
FROM myTable1
WHERE myTable1.ts BETWEEN TO_TIMESTAMP('2013-09-29','yyyy-mm-dd') AND TO_TIMESTAMP('2013-10-06','yyyy-mm-dd')
--AND myTable1.statusCode = 'O'
)Records
和
USING (system, ts, statusCode)
我試着只是在一個LEFT JOIN粘在兩個查詢中間,但沒有工作(我可能做錯了),如圖
編輯:添加了JOIN和使用與實施例的什麼不是工作,收到「無效表名」
你需要他們加入什麼? – Ben
「你沒有工作」是什麼意思? – StevieG
@StevieG我把一個左加入之間,然後在最後使用(系統,ts,statusCode)只是從SQL Developer開始無用的錯誤消息 – Kairan