如何解决SQL联合查询同一表中具有不同where条件的同一列
对于双向发布者报表,我需要在两个不同的列中使用Amount和CarAmount。在同一列PROJECT_COST用于不同的条件。但是union只返回并集的第一部分的结果。
secondLast
解决方法
UNION
在第二个查询中忽略您的别名。它将简单地将第一列映射到第一列,将第二列映射到第二列。不要重命名这些列,而是尝试对其重新排序。
对于双向发布者报表,我需要在两个不同的列中使用Amount和CarAmount。这两个PROJECT_COST列用于不同的条件。
select
peia.PROJECT_COST as Amount,Null CarAmount
from
Project_Element ppet,Project_Items peia,Project_Types petb
where
peia.TASK_ID=ppet.PROJ_ELEMENT_ID and petb.ATTRIBUTE1 in (51110,51170,59999)
UNION select
Null Amount,peia.PROJECT_COST as CarAmount
from
Project_Element ppet,Project_Types petb
where
peia.TASK_ID=ppet.PROJ_ELEMENT_ID and petb.ATTRIBUTE1 in (59500)
此外,我建议使用UNION ALL
。 UNION
由于只会返回不同的值,因此会导致性能下降。由于您要过滤不同的ID并将数据放在不同的列中,因此SQL Server不必担心重复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。