【发布时间】:2017-10-01 01:02:27
【问题描述】:
我想返回 Contracts 表中的所有行,但第二个 WHERE 子句只产生不为空的行。 (换句话说,在“CAD”限制下方的代码中,大约有一半可能的行没有以加元交易的价值,因此不会返回——而我希望返回的所有可能行在适用的情况下显示 NULL 值)。
我认为这是一个左自连接,但我在语法上苦苦挣扎(和/或我是否需要做一个内部选择),
SELECT MeasurableID,
EntityID,
MIN (ContractPrice) AS LowPrice,
MAX (ContractPrice) AS HighPrice
FROM dbo.Contracts
WHERE dbo.Contracts.MeasurableID = 2018
AND Contracts.CurrencyCode IN ( 'CAD' )
GROUP BY
dbo.Contracts.MeasurableID,
dbo.Contracts.EntityID
【问题讨论】:
-
WHERE dbo.Contracts.MeasurableID = 2018 AND (Contracts.CurrencyCode IN ( 'CAD' ) OR Contracts.CurrencyCode IS NULL) -
在 where 子句中添加或使用 'null',目前它只检查 IN ('CAD')
-
Contracts.CurrencyCode 永远不会为 NULL(即其他合约以美元或印度卢比等为单位),因此这无济于事。
-
请编辑澄清您的问题,而不是 cmets。此外,如果您还有其他问题,请将其作为问题发布,而不是在评论中。另外,你真的没有清楚地解释你想要什么,请编辑清楚。 (例如,您的第一句话的“但是”是对规范的改进还是查询有问题?)此外,这不是自联接或左联接,它没有联接。
标签: sql sql-server left-join self-join