-2
我在應用case..when中的where子句時遇到問題。當我將0和4之間的值放在where子句中時,我會得到預期的結果,但在應用案例時,它會失敗。數據不能讀取where子句
表名:MYTBL
data | amount | date | ReceiptFrequency A 2000 02-03-1988 Annual A 2000 02-03-1990 Semiannual A 2000 02-03-1991 Annual A 2000 02-03-1992 Annual
create TABLE #Table (num int NOT NULL,);
;WITH Nbrs (n) AS (
SELECT 1 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n < 60)
INSERT #Table(num)
SELECT n FROM Nbrs
OPTION (MAXRECURSION 60)
SELECT *FROM #Table AS x,#Table AS y,myTbl AS d
WHERE (d.ReceiptFrequency<>'Random') AND(x.num BETWEEN 0 AND 1(CASE WHEN d.ReceiptFrequency='Annual' THEN 1 WHEN d.ReceiptFrequency='Quarter' THEN 1 WHEN d.ReceiptFrequency='Month' THEN 12 WHEN d.ReceiptFrequency='SemiAnnual' THEN 2 ELSE 1 END -1))
你能詳細說明*它會得到更好的結果嗎?你究竟想達到什麼目的?您的預期結果將非常有幫助。 – GarethD
如果ReceiptFrequency是Month和12,如果ReceiptFrequency是Semi-Annual,那麼2,如果ReceiptFrequency是Annual,那麼你應該使用4作爲ReceiptFrequency Quarter? – Nilesh