0
目前我使用的是'UNION ALL'
,因爲它們的ID是完全不同的。這是因爲每個視圖中的WHERE條件。第一視圖(V1)計算所有5種類型中,只有那些小於1000。對於第二個視圖(v2)中的相同類型小時,但僅是大於1000。如何訪問UNION ALL中另一個視圖的字段?
編輯的時間:
這是我的代碼:
SELECT
skill_type
,sched_hours AS sched_hours_online
,actual_hours AS actual_hours_online
,'' AS sched_hours_offline
,'' AS actual_hours_offline
FROM (
SELECT DISTINCT
myID
,skill_type
,sched_hours
,actual_hours
FROM (
SELECT DISTINCT
ex.myID AS myID
,ex2.skill_type AS skill_type
,SUM(ex2.sched_hr) OVER (PARTITION BY ex2.skill_type) AS sched_hours
,SUM(ex2.actual_hr) OVER (PARTITION BY ex2.skill_type) AS actual_hours
FROM example ex
--
JOIN example_join ex1
ON ex1.myID = ex.myID
--
JOIN example_join2 ex2
ON ex2.myID = ex1.myID
WHERE (ex1.total_hours < 1000)
) v1
UNION ALL
SELECT DISTINCT
myID
,skill_type
,sched_hours
,actual_hours
FROM (
SELECT DISTINCT
ex.myID AS myID
,ex2.skill_type AS skill_type
,SUM(ex2.sched_hr) OVER (PARTITION BY ex2.skill_type) AS sched_hours
,SUM(ex2.actual_hr) OVER (PARTITION BY ex2.skill_type) AS actual_hours
FROM example ex
--
JOIN example_join ex1
ON ex1.myID = ex.myID
--
JOIN example_join2 ex2
ON ex2.myID = ex1.myID
WHERE (ex1.total_hours > 1000)
) v2
)
這是我在輸出目前看到:
'UNION ALL'
可以在圖像中看到很棒的效果。但不幸的是,這不完全是我想要的。第一條記錄(357.17和296.79)應位於相同類型的第二條記錄(稱爲"SCHED_HOURS_OFFLINE"
和"ACTUAL_HOURS_OFFLINE"
)下方的右列。但我不知道該怎麼做。我以爲我可以這樣做:
SELECT
skill_type
,v1.total_sched_hours AS sched_hours_online
,v1.total_actual_hours AS actual_hours_online
,v2.total_sched_hours AS sched_hours_offline
,v2.total_actual_hours AS actual_hours_offline
FROM (
但由於某種原因,我沒有訪問v1和v2。
整個表的技能類型是否相同?你能加入嗎? – Ilythya
這不是關於連接本身。如果我可以訪問像v1和v2這樣的字段,那就沒問題。但我不能。可能我做錯了什麼。或者這是不可能的。 – Jamie
請再次參考@ llythya的問題。您需要在* SKILL_TYPE *的同一行上輸出,因此在線/離線配對如何彼此並排且無關聯。如果v2的行數多於v1,該怎麼辦? – Parfait