SELECT
PDADate, T.Merchandizer_ID, T.Merchandizer, Merchandizer_LoginName,
STORE_ID, STORE_CODE, STORE_NAME,
ACCOUNT_ID, ACCOUNT_NAME, Account_Store_Format_Id, Account_Store_Format,
StoreType_Id, StoreType, T.Listid, T.Listname,
T.TimeIn, T.TimeOut, T.PlannedDate, T.Reason, TaskCode, TotalTime
FROM
[dbo].Report_RD_Coverage T
INNER JOIN
#TempLocationH TL ON TL.LocationId=T.Location_Id
WHERE
CONVERT(Date, PDADate) Between (@Start_Date) AND Isnull(@End_Date, @CurrentDate)
AND T.Account_Id IN
(SELECT
CASE WHEN @Account_Id IS NULL THEN T.Account_Id
ELSE (SELECT * FROM UDF_SplitString(@Account_Id,','))
END
)
AND T.StoreType_Id IN
(SELECT
CASE WHEN @StoreType_Id IS NULL THEN T.StoreType_Id
ELSE (SELECT * FROM UDF_SplitString(@StoreType_Id,','))
END
)
AND T.Store_Id IN
(SELECT
CASE WHEN @Store_Id IS NULL THEN T.Store_Id
ELSE (SELECT * FROM UDF_SplitString(@Store_Id,','))
END
)
如果@Account_Id
,@StoreType_Id
和@Store_Id
是空的,應該選擇所有ACCOUNT_ID
,STORETYPE_ID
和STORE_ID
否則基於參數值應該過濾。case語句 - SQL Server 2008中
UDF_SplitString
是分裂逗號分隔的字符串的函數,它的返回值是一個表,如:
- 1
- 2
- 3
我得到這個錯誤:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
工作這意味着正是它說。 IN聲明顯然返回了多行。我會檢查每個IN語句並驗證它不超過1行返回。 – logixologist
我猜這個人是這樣做的:'SELECT * FROM UDF_SplitString(@Account_Id,','))END'。指定在UDF_SplitString函數中返回的列名。 – logixologist
UDF_SplitString是逗號分隔符的函數,它正在迴歸表中的值。像 –