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