我有一個表GrowDaysLocation
。在該表中,可以有關於DistrictId
和RegionId
使用Case語句爲SQL Server 2008的where語句賦值NULL值
的兩條記錄,
RegionId=1
和DistrictId = NULL
RegionId=1
和DistrictId = 1
我有一個條件,如果該行不爲RegionId = 1 and DistrictId = 1
存在,則得到的行RegionId = 1 and DistrictId = NULL
。
如何使用單個查詢完成此操作?
以下是我試過的查詢。
在這個查詢中,我在Where子句中使用CASE並使用子查詢來查找行的存在,但是問題是當我從大小寫返回NULL時它不會返回任何行。
============================================== ====
SET ANSI_NULLS OFF
Select * From GrowDaysLocations
Where DistrictId =
(CASE WHEN (Select Count(*) From GrowDaysLocations
Where RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND DistrictId = 'F4B67A07-1BF7-42F5-9F19-77329A215D8B' AND
GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0') > 0 THEN DistrictId
ELSE
NULL
END
)
AND RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0'
======================================= ====
我不明白,你說'如果該行不存在RegionId = 1和DistrictId = 1',但你的例子意味着該行不存在給定的值'x'和'y' - - 這是真的? – Hogan 2012-07-22 14:25:06