我想在SQL 2008 R2中編寫一個存儲過程,並遇到重大問題。它後面的查詢應該拉首字母,姓,餘額,&個案類型。問題是,有些人(即結果)將具有相同的名稱。所以我添加了一個參數@DOB來刪除它們。如果有幾個同名的人,用戶應該能夠輸入出生日期,並且只能讓他回來。問題是......我無法讓它工作。這裏是我的查詢 - 警告我使用別名,如果其迷惑我道歉閱讀:SQL查詢如果參數爲空
SELECT cs.last_name ,
cs.first_name ,
cs.dob,
cb.assessment_balance_due ,
cb.case_number,
ct.case_type_title
FROM vw_customer_service cs
INNER JOIN vw_case_balance cb ON cs.case_ID = cb.case_ID
INNER JOIN [case] on cs.case_ID = [case].case_ID
INNER JOIN cd_case_type ct ON [case].case_type_ID = ct.case_type_ID
WHERE **--(cs.dob = case when @dob is null then cs.dob else @dob end)** and
cb.assessment_balance_due > 0
AND cs.last_name = @LastName
AND cs.first_name = @FirstName
AND party_type_ID = 28 --defendant
AND (@dob IS NULL)
GROUP BY
cs.case_ID, cs.last_name, cs.first_name , cb.Assessment_Balance_Due,DOB, cb.case_number, ct.case_type_title
如果用戶將在DOB這隻會返回數據,但我想這只是一個選項。如何根據一個參數篩選結果集,或者如果參數未關閉,則根本不篩選?提前致謝!
提出的解決方案*工作*,但他們可能不會規模非常好,如果表得到大和你有許多不同的參數組合。我稱之爲[廚房水槽現象](http://sqlsentry.tv/the-kitchen-sink-procedure/)。 – 2014-10-09 18:32:18
我看了你的視頻 - 很棒的信息。但是,這份報告將始終以被告名稱運行,所以希望Kitchen Sink不適用於此! – eab 2014-10-15 01:21:59