Report Builder 查询文本编辑器 Where 子句括号
Report Builder Query Text Editor Where Clause Parentheses
我的雇主更换了数据系统和报告工具。我们过去常常将 Report Builder 与构建良好的数据模型一起使用,这使我可以轻松地进行一些复杂的过滤。然后我们使用了 Business Objects,虽然我不太喜欢它,但它也让我可以做一些复杂的过滤。现在我们回到 Report Builder,但数据模型不同,我似乎能够做的唯一过滤是一串 AND 运算符。
(注意:我在 Report Builder 和 Business Objects 方面都是自学的。我对 SQL 编码语言本身的经验很少。此外,实际数据标签已在此示例中更改。)
我正在从大量数据中提取数据,因此我需要在查询级别进行筛选。我首先需要包含基于五个标准的数据,如下所示。
| SYSTEM.REGION.REGION_STATUS_CODE = N'1'
| SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND | SYSTEM.ORDERS.DISCARDED_DATE IS NULL
| SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
| SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
然后我需要包含符合两个配对之一的数据,就像这样。
| | SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail'
| AND | SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
OR |
| | SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale'
| AND | SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
在我使用查询设计器构建查询并切换到文本模式后,它给了我这个。
WHERE
SYSTEM.REGION.REGION_STATUS_CODE = N'1'
AND SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND SYSTEM.ORDERS.DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail'
AND SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale'
AND SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
我试过放入括号,但我一定做错了,因为查询 运行 很久才真正给我整个数据库。
有人愿意帮助 SQL 新手吗?
假设其他一切都是正确的,它应该只是应用括号来使逻辑正确。使用稍微夸张的空格来尝试使其清晰:
WHERE
SYSTEM.REGION.REGION_STATUS_CODE = N'1'
AND SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND SYSTEM.ORDERS.DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
AND (
(SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail')
OR
(SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale')
)
(它仍然可能 运行 永远,但这更多是数据库大小和索引的一个因素。)
我的雇主更换了数据系统和报告工具。我们过去常常将 Report Builder 与构建良好的数据模型一起使用,这使我可以轻松地进行一些复杂的过滤。然后我们使用了 Business Objects,虽然我不太喜欢它,但它也让我可以做一些复杂的过滤。现在我们回到 Report Builder,但数据模型不同,我似乎能够做的唯一过滤是一串 AND 运算符。
(注意:我在 Report Builder 和 Business Objects 方面都是自学的。我对 SQL 编码语言本身的经验很少。此外,实际数据标签已在此示例中更改。)
我正在从大量数据中提取数据,因此我需要在查询级别进行筛选。我首先需要包含基于五个标准的数据,如下所示。
| SYSTEM.REGION.REGION_STATUS_CODE = N'1'
| SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND | SYSTEM.ORDERS.DISCARDED_DATE IS NULL
| SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
| SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
然后我需要包含符合两个配对之一的数据,就像这样。
| | SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail'
| AND | SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
OR |
| | SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale'
| AND | SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
在我使用查询设计器构建查询并切换到文本模式后,它给了我这个。
WHERE
SYSTEM.REGION.REGION_STATUS_CODE = N'1'
AND SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND SYSTEM.ORDERS.DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail'
AND SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale'
AND SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
我试过放入括号,但我一定做错了,因为查询 运行 很久才真正给我整个数据库。
有人愿意帮助 SQL 新手吗?
假设其他一切都是正确的,它应该只是应用括号来使逻辑正确。使用稍微夸张的空格来尝试使其清晰:
WHERE
SYSTEM.REGION.REGION_STATUS_CODE = N'1'
AND SYSTEM.STATE.STATE_STATUS_CODE = N'1'
AND SYSTEM.ORDERS.DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_DISCARDED_DATE IS NULL
AND SYSTEM.SERVICE.SERVICE_STATUS_CODE = N'01'
AND (
(SYSTEM.ORDERS.DISCOUNT_CODE = N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Retail')
OR
(SYSTEM.ORDERS.DISCOUNT_CODE != N'N/A'
AND SYSTEM.SERVICE.SERVICE_CONTRACT_CODE = N'Wholesale')
)
(它仍然可能 运行 永远,但这更多是数据库大小和索引的一个因素。)