【发布时间】:2017-06-15 07:36:10
【问题描述】:
这里是新手!我有一些 SQL 代码,其中包含许多充当规则的子选择。现在我有许多使用 LIKE 运算符的嵌套 WHERE 子句,但是我想知道是否有一种方法可以合并代码或合并条件。
SELECT TOP 1 [ID]
FROM [forecast].[dbo].[forecast_tool_product_identifiers]
WHERE [macro_products_id] = '3' -- Macro Prouduct Dropdown
AND ISNULL([source_attribute_1],' ') LIKE
(SELECT
[col1]-- First RULE value
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001' -- Current rule Template
AND [rule_sequence] = '1') -- RULE sequence number (will be looped)
AND ISNULL([source_attribute_2],' ') LIKE
(SELECT
[col2]-- Second RULE value - etc.
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_3],' ') LIKE
(SELECT
[col3]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_4],' ') LIKE
(SELECT
[col4]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_5],' ') LIKE
(SELECT
[col5]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_6],' ') LIKE
(SELECT
[col6]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_7],' ') LIKE
(SELECT DISTINCT
[col7]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_8],' ') LIKE
(SELECT
[col8]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_9],' ') LIKE
(SELECT
[col9]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_10],' ') LIKE
(SELECT
[col10]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_11],' ') LIKE
(SELECT
[col11]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1')
AND ISNULL([source_attribute_12],' ') LIKE
(SELECT
[col12]
FROM [forecast].[dbo].[forecast_tool_rule_templates]
WHERE [template_name] = 'testADI001'
AND [rule_sequence] = '1') AND [ID] -- Application Drop Down values below
IN
(SELECT [ID]
FROM [forecast].[dbo].[forecast_tool_product_identifiers]
WHERE [macro_products_id] = '3' AND
ISNULL([source_attribute_1],' ') LIKE '%' AND
ISNULL([source_attribute_2],' ') LIKE '%' AND
ISNULL([source_attribute_3],' ') LIKE '%' AND
ISNULL([source_attribute_4],' ') LIKE '%' AND
ISNULL([source_attribute_5],' ') LIKE '%' AND -- ETH-10GE (TEST VALUE)
ISNULL([source_attribute_6],' ') LIKE '%' AND
ISNULL([source_attribute_7],' ') LIKE 'BLTMMDCH' AND -- NYCMNY54 (TEST VALUE)
ISNULL([source_attribute_8],' ') LIKE '%' AND
ISNULL([source_attribute_9],' ') LIKE '%' AND -- AGSTMEST (TEST VALUE)
ISNULL([source_attribute_10],' ') LIKE '%' AND
ISNULL([source_attribute_11],' ') LIKE '%' AND
ISNULL([source_attribute_12],' ') LIKE '%');-- KT (TEST VALUE)
提前谢谢你!
【问题讨论】:
-
欢迎来到 Stack Overflow。运行代码审查/优化应该进入codereview.stackexchange.com
标签: sql sql-server sql-like