背景:我正在準備這個資料集以用于 SSRS 報告,我的目標是將串列分成大約多個部分(平等地)供員工接收。它將被用作各種“任務串列”。
我嘗試了兩種不同的方法,這兩種方法都引起了問題。
嘗試 #1 - 錯誤是“語法不正確”:
SELECT
CASE @EmployeeName
WHEN 'Jane Doe' THEN (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS rn FROM #TaskList) WHERE rn % 2 = 0)
WHEN 'John Doe' THEN (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS rn FROM #TaskList) WHERE rn % 2 = 1)
ELSE 'test test'
END
嘗試 #2 - 錯誤是“語法不正確”:
SELECT * FROM (
SELECT *,
ROW_NUMBER() OVER (ORDER BY ID) AS rn
FROM
#TaskList
) T1
WHERE
CASE @EmployeeName
WHEN 'Jane Doe' THEN rn % 2 = 1
WHEN 'John Doe' THEN rn % 2 = 0
END
有沒有辦法使用我的方法或類似的方法來完成這個?
uj5u.com熱心網友回復:
在您的兩次嘗試中,在我看來,您的 WHEN 和 THEN 值/陳述句都顛倒了。
像這樣的東西應該作業......
SELECT *
FROM (SELECT *, ROW_NUMBER () OVER (ORDER BY ID) AS rn FROM #TaskList) T1
WHERE CASE
WHEN rn % 2 = 1 THEN
'Jane Doe'
WHEN rn % 2 = 0 THEN
'John Doe'
END = @EmployeeName;
此外,如果您的 ID 是連續的,您可以跳過整個ROW_NUMBER()邏輯并將rn替換為ID像這樣......
SELECT *
FROM #TaskList
WHERE CASE
WHEN ID % 2 = 1 THEN
'Jane Doe'
WHEN ID % 2 = 0 THEN
'John Doe'
END = @EmployeeName;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/504674.html
標籤:sql tsql sql-server-2008 ssrs-2008
上一篇:SQLCount()回傳全1
下一篇:在不同的選擇中按轉換日期排序
