Sql-Server
在單獨的計算欄位中使用計算欄位
我試圖避免僅為一個欄位創建臨時表,但我需要在單獨的計算欄位中使用計算欄位。例如:
,CASE WHEN ln.INT_RATE_CODE = 'A' THEN 1 WHEN ln.INT_RATE_CODE = 'B' THEN 2 WHEN ln.INT_RATE_CODE = 'C' THEN 3 ELSE 0 END AS RateReset ,CASE WHEN ln.TIME_RATE = 1 AND RateReset = 3 THEN 'Pass' ELSE 'FAIL' END AS OGIntRate
如果您只需要破解它,您可以將第一個表達式嵌入到第二個中:
,CASE WHEN ln.INT_RATE_CODE = 'A' THEN 1 WHEN ln.INT_RATE_CODE = 'B' THEN 2 WHEN ln.INT_RATE_CODE = 'C' THEN 3 ELSE 0 END AS RateReset ,CASE WHEN ln.TIME_RATE = 1 AND (CASE WHEN ln.INT_RATE_CODE = 'A' THEN 1 WHEN ln.INT_RATE_CODE = 'B' THEN 2 WHEN ln.INT_RATE_CODE = 'C' THEN 3 ELSE 0 END) = 3 THEN 'Pass' ELSE 'FAIL' END AS OGIntRate
儘管基於這個非常有限的查詢摘錄,您應該能夠檢查
INT_RATE_CODE = 'C'
:,CASE WHEN ln.TIME_RATE = 1 AND ln.INT_RATE_CODE = 'C' THEN 'Pass' ELSE 'FAIL' END AS OGIntRate
如果您能夠更改表定義,則可以為第一個
CASE
表達式添加一個計算列,然後在另一個CASE
表達式中直接引用它。像這樣:ALTER TABLE YourTableName ADD COLUMN RateReset AS CASE WHEN ln.INT_RATE_CODE = 'A' THEN 1 WHEN ln.INT_RATE_CODE = 'B' THEN 2 WHEN ln.INT_RATE_CODE = 'C' THEN 3 ELSE 0 END;
然後
OGIntRate
可以直接基於RateReset
您在原始程式碼中的內容。