动态SQL,其中条件来自另一个表中的值

时间:2019-03-15 14:29:38

标签: sql sql-server tsql stored-procedures dynamic-sql

我想构建一个动态SQL查询,可以在其中使用来自另一个表的数据作为条件。假设我有两个表:一个表包含财务数据,另一个表包含条件。他们看起来像这样:

sales

c006    mesocomp    c048      c020   c021
-----  ---------- -------    -----   ----
120     01TA       MICROSOFT  2      239

和一个包含以下数据的condition表:

   dimension   operator    wert_db 
   ---------   --------    ------- 
   sales.c006     <           700 
   sales.c048   not like    'MIC%'
   sales.c021   in         (203,206)   

我要从条件表中列出的条件中选择销售的所有数据。所以我有一个SQL查询,如下所示:

SELECT * 
FROM sales 
WHERE sales.c006 < 700 
  AND sales.c048 NOT LIKE 'MIC%' 
  AND sales.c021 IN (203, 206)

2 个答案:

答案 0 :(得分:2)

由于您尚未发布解决方案或自己进行研究的尝试,因此,我将为您指明入门的方向。

您的问题已经提到使用动态SQL,因此我假设您至少知道那是什么。您将填充一个以private $fetched开头的字符串变量。

您可以使用STUFF...FOR XML PATH技术将'SELECT * FROM Sales '行汇编成WHERE子句。

对链接示例的一个更改是,您需要将conditionsdimensionoperator连接到最里面的SELECT的一个人造列中。另外,不要用逗号分隔,而要用wert_db分隔。并更改STUFF函数的参数以取' AND '的长度而不是逗号的长度。

答案 1 :(得分:0)

Method threw 'java.lang.ArrayIndexOutOfBoundsException' exception.