【问题标题】:Combine results of three IF Exists conditioned select statements results using union not working in Sql server使用联合在 Sql server 中不起作用的三个 IF Exists 条件选择语句结果组合结果
【发布时间】:2019-01-28 13:13:00
【问题描述】:

我有三个带有 If Exists() 的 sql select 语句,格式如下:

IF exists(
Select 1 * from table1
)
IF exists(
Select 2 * from table2
)
IF exists(
Select 3 * from table3
)

三个表结果返回相同的列,但它们在 if 中进行了不同的计算。现在我得到了三个单独的表作为结果,我需要将它们作为一个表加入我尝试使用 Union 但没有工作。欢迎提出任何建议。

编辑 结果现在我得到了这样的结果:

Table1 ===> From |   To  | Hours

Table2====> From | To | Hours

Table3===> From | To | Hours

我需要一个表中的所有这些表值。这三个表值可能包含也可能不包含多行或空值(无行)

【问题讨论】:

  • 为了让UNION 与相同数量和顺序的列一起工作,列的数据类型也应该兼容。您的 table1、table2 和 table3 是否有共同点。
  • 添加一些示例表数据和预期结果 - 全部为格式化文本,而不是图像。
  • 没有表数据类型不同。我为所有三个表返回相同的列...为此还需要做什么?
  • 我已经添加了预期结果@jarlh..希望你现在可以得到它。

标签: sql sql-server union


【解决方案1】:

我不知道为什么union 不适合您,但如果您使用union all,则不需要使用exists

select t1.col1, t1.col2
from table1 t1
union all
select t2.col1, t2.col2
from table2 t2
union all
select t3.col1, t3.col2
from table3 t3;

注意:

  • 所有SELECT中的表达式/列数必须相同 声明。
  • SELECT 语句中对应的表达式/列必须具有相同的数据类型。

【讨论】:

  • 我已经在其中工作了,这些对我的情况没有帮助,兄弟。无论如何感谢您的建议!
  • @SPYder 。 . .我赞成,因为我认为这正确回答了您的问题。
  • 是的,这也是正确的答案......在我的情况下,我使用临时表概念解决了它!
【解决方案2】:

我在朋友的帮助下使用#Temp 表解决了这个问题。每次我从一个表中获取值并将其插入到临时表中,就像所有表值一样。 最后我打印了临时表的值。正如我所料,我也得到了结果!。谢谢。

【讨论】:

    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多