[英]sql server using where criteria for multiple values being passed
我正在嘗試將1到10條條件傳遞給在下面的此過程中使用以下select語句的存儲過程:
ALTER PROCEDURE [dbo].[Original_Docs]
@Cat varchar(255),
@docType VARCHAR(255),
@IdNo VARCHAR(50)
AS
BEGIN
SELECT
d4.id as DOCUMENT_ID, c.name as Category, dt.name as Document_Type,
mv1.value as GUIDELINE_MASTER, mv2.value as ID_NUMBER, mv3.value as [DATE],
mv4.value as DESCRIPTION, mv5.value AS BUDGET_NUM, mv6.value as STATUS,
mv7.value AS [CLOSED DATE], mv8.value AS REPORT_TYPE
FROM Documents d4
JOIN (
SELECT d2.id
FROM Documents d2
JOIN (
SELECT d.fileStoreId, MIN(d.createdDate) as CreatedDate
FROM Documents d
JOIN FileStores fs ON d.fileStoreId = fs.id
WHERE fs.shared = 1 AND d.dateDeleted IS NULL
GROUP BY d.fileStoreId
) AS f ON d2.fileStoreId = f.fileStoreId AND d2.createdDate = f.CreatedDate
UNION
SELECT d3.id
FROM Documents d3
JOIN FileStores fs2 ON d3.fileStoreId = fs2.id
WHERE fs2.shared = 0 AND d3.dateDeleted IS NULL
) AS f2 ON f2.id = d4.id
JOIN DocumentTypes dt ON d4.documentTypeId = dt.id
JOIN Categories c ON dt.categoryId = c.id
LEFT OUTER JOIN mv_guideline_master mv1 ON d4.id = mv1.documentId
LEFT OUTER JOIN mv_id_number mv2 ON d4.id = mv2.documentId
LEFT OUTER JOIN mv_date mv3 ON d4.id = mv3.documentId
LEFT OUTER JOIN mv_description mv4 ON d4.id = mv4.documentId
LEFT OUTER JOIN mv_budgetnum mv5 ON d4.id = mv5.documentId
LEFT OUTER JOIN mv_status mv6 ON d4.id = mv6.documentId
LEFT OUTER JOIN mv_closed_date mv7 ON d4.id = mv7.documentId
LEFT OUTER JOIN mv_report_type mv8 ON d4.id = mv8.documentId
WHERE c.name = @Cat AND (dt.name = @docType OR mv2.value = @IdNo)
ORDER BY mv1.value
在弄清楚如何用3條標准完成后,我將需要添加其他標准。 在where子句中,我傳遞了@ Cat,@ docType和@IdNo參數。 如何使用這些條件查詢,其中一個用另一個或兩個空白填充? 或者,如果所有這些都傳入了,或者僅傳入了2個。如果我使用AND,那么它不起作用,或者如果我在條件之間使用OR,它將帶回錯誤的結果。 我需要在某個地方使用Parens使其工作嗎?
謝謝!
如果每個變量都可以為NULL,則不確定我是否完全遵循:
WHERE (c.name = @Cat OR @Cat IS NULL)
AND ((dt.name = @docType OR @docType IS NULL)
OR (mv2.value = @IdNo OR @IdNo IS NULL))
或空白:
WHERE (c.name = @Cat OR @Cat = '')
AND ((dt.name = @docType OR @docType = '')
OR (mv2.value = @IdNo OR @IdNo = ''))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.