Sql 如何从UNION ALL中的另一个视图访问字段?
目前我使用的是一个Sql 如何从UNION ALL中的另一个视图访问字段?,sql,oracle,Sql,Oracle,目前我使用的是一个'UNION ALL',因为它们的ID完全不同。这是因为每个视图中的WHERE条件。第一个视图(v1)计算所有5种类型,仅计算小于1000的小时数。对于第二个视图(v2),使用相同的类型,但仅使用大于1000的小时数 编辑: 这是我的代码: SELECT skill_type ,sched_hours AS sched_hours_online ,actual_hours AS actual_hours_online
'UNION ALL'
,因为它们的ID完全不同。这是因为每个视图中的WHERE条件。第一个视图(v1)计算所有5种类型,仅计算小于1000的小时数。对于第二个视图(v2),使用相同的类型,但仅使用大于1000的小时数
编辑:
这是我的代码:
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
)
但由于某些原因,我无法访问v1和v2。您需要在每个要通过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 (...
UNION ALL
SELECT
skill_type
,'' AS sched_hours_online
,'' AS actual_hours_online**
,sched_hours AS sched_hours_offline
,actual_hours AS actual_hours_offline
FROM (...
在每个要通过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 (...
UNION ALL
SELECT
skill_type
,'' AS sched_hours_online
,'' AS actual_hours_online**
,sched_hours AS sched_hours_offline
,actual_hours AS actual_hours_offline
FROM (...
各表中的技能类型是否相同?你能加入这些吗?这与加入本身无关。如果我可以访问像v1和v2这样的字段,那就好了。但我不能。也许我做错了什么。或者这是不可能的。请再次参考@llythya的问题。您需要与SKILL_类型在同一行上输出,因此在线/离线配对如何彼此并排而不相关。如果v2比v1有更多的行呢?我理解@Ilythya的意思,但它比v1复杂一点。v2的行数是否多于v1并不重要。由于ID不同,这两个视图彼此不相关。第一个视图显示每种类型小于1000的所有小时数(联机小时数),第二个视图显示每种类型大于1000的所有小时数(脱机小时数)。我编辑了我的帖子。希望我现在解释得更好。当然。但是你说两个视图都显示了每种类型的小时数-如果类型相同,那么你实际上想要的可能是技能类型上两个视图之间的完全外部连接-而不是一个联合。所有表中的技能类型都相同吗?你能加入这些吗?这与加入本身无关。如果我可以访问像v1和v2这样的字段,那就好了。但我不能。也许我做错了什么。或者这是不可能的。请再次参考@llythya的问题。您需要与SKILL_类型在同一行上输出,因此在线/离线配对如何彼此并排而不相关。如果v2比v1有更多的行呢?我理解@Ilythya的意思,但它比v1复杂一点。v2的行数是否多于v1并不重要。由于ID不同,这两个视图彼此不相关。第一个视图显示每种类型小于1000的所有小时数(联机小时数),第二个视图显示每种类型大于1000的所有小时数(脱机小时数)。我编辑了我的帖子。希望我现在解释得更好。当然。但是你说两个视图都显示了每种类型的小时数——如果类型相同,那么你实际上想要的可能是技能类型上两个视图之间的完全外部连接——而不是一个联合。