2
這個查詢使用ISNULL():在WHERE子句
SELECT
sc.ContactID
, c.Price
, p.ParkID
FROM
tblc c
JOIN tblsc ON c.ID= sc.ID
LEFT JOIN tblp p ON sc.ID= p.ID
WHERE
(stuff = stuff)
AND (stuff = stuff)
返回此:
ContactID LeadSalePrice ParkID
-------------------------------------
1 50 NULL
2 60 22
現在,我想建立另一個AND
子句ParkID
。但是,我只想在ParkID
不爲NULL的行上執行此AND
。因此,如果在ParkID
爲NULL的行上,我們希望始終保留這些行。在ParkID不爲NULL的行上,如果ParkID
與參數匹配,我們只想保留這些行。
如果@ParkID = 22,則返回兩行。
如果@ParkID <> 22,那麼只返回最上面一行。
如果@ParkID = NULL,則返回兩行。
我已經試過這樣:
SELECT
sc.ContactID
, c.Price
, p.ParkID
FROM
tblc c
JOIN tblsc ON c.ID= sc.ID
LEFT JOIN tblp p ON sc.ID= p.ID
WHERE
(stuff = stuff)
AND (stuff = stuff)
AND p.ParkID =
CASE WHEN p.ParkID IS NULL THEN
NULL
ELSE
@ParkID
END
這不起作用,因爲適當的方式與空比較是不是:
= NULL
這是
IS NULL
對於相同的原因(我認爲),這也不起作用:
AND p.ParkID = Isnull(p.ParkID, @ParkID)
我該怎麼做?
謝謝!我會測試這個 –