【发布时间】:2019-08-06 15:58:48
【问题描述】:
我想构建一个动态 SQL 查询,我可以在其中使用另一个表中的数据作为 where 条件。假设我有两张表:一张包含财务数据,另一张包含条件。它们看起来像这样:
表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)
【问题讨论】:
-
您要么需要大量的
case表达式,要么需要动态 SQL。将 SQL 代码存储在列中通常不被认为是一种好的做法,除非您有充分的理由。 -
是的,你说得对,这不是一个好的做法,但我们的客户提供了一个包含直接传输到表格中的条件的 Excel 表...
标签: sql sql-server tsql stored-procedures dynamic-sql