【问题标题】:Execute SQL query based on results of a condition根据条件结果执行 SQL 查询
【发布时间】:2019-11-18 00:31:25
【问题描述】:

我的 SQL 知识有些有限。我有 2 个 Select 语句返回单独的结果集。由于要查询的表是每个 Select 语句的不同表集,我想知道是否可以编写它,以便它根据从完全不同的表上的 Select 语句返回的结果来选择要执行的查询,例如示例:

Select C.ManBtchNum from Table C
   If OITM.ManBtchNum = 'Y' then
       Select * from Table A
   else
       Select * from Table B

很抱歉使用伪代码,但这是我能解释这一点的最短方式。

我不确定这里是否可以使用 Case 表达式。任何意见将是有益的。谢谢

我已尝试过 Case 和 Union,但没有得到所需的结果。当然,考虑到我的知识有限,我可能做错了什么

【问题讨论】:

  • 第一次看到“select table”,是错字还是不知道的rdms?
  • 这可能是通过对两个表和 COALESCE 或 CASE 使用 INNER JOIN 来实现的。请提供这三个表中的一些示例数据以及该示例数据的预期结果,我们可以提供进一步的帮助。
  • 创建过程,声明变量,从第一个查询中填充变量(单值!),使用if @variable = xxx ... else ...(使用正确的语法)。最好避免使用select * - 而是使用指定的字段列表。
  • 有没有办法加入可能的结果集并保持值相似?或者结果集 1 是否有可能返回数字,而另一个结果返回不同的数据类型(字符、日期等),这样查询可能会根据结果出错?
  • @a_horse_with_no_name - 我正在使用 sql-server。

标签: sql sql-server tsql


【解决方案1】:

举个例子,

select t1.Val, t2.Val, t3.Val,               
case                                                  
when(t1.Val = Something)Then (T2.Val)Else(t3.Val)
END 
from tablex t1 
inner join tabley t2 on t1.commonfield = t2.commonfield
inner join tablez t3 ON t1.commonfield = t3.commonfield

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 2012-11-29
    • 2020-08-28
    • 2018-09-12
    • 1970-01-01
    • 2016-11-02
    • 2014-02-21
    • 2014-04-30
    • 2010-10-03
    相关资源
    最近更新 更多