[英]Case expression inside of a case expression
我正在使用 LIMS 數據庫軟件並試圖為我們的分析師簡化事情。
最初我有這個直接 case 語句,它適用於我們使用的每個“測試”
CASE
WHEN ([Dry Fertilizer].[Phosphorus ICP (< 6.99 Guar)].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.67))
THEN -1 ELSE 0
END
另一個
CASE
WHEN ([Dry Fertilizer].[Phosphorus ICP (10-13.99 Guar)].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.69)) THEN -1
ELSE 0
END
其目的是查看測試結果[磷],與已知數字[保證]進行比較,然后計算並輸出“-1”如果低於則失敗或“0”並通過。
現在,我不再對每個“保證”進行不同的測試,而是考慮采用所有這些數字並進行相當大的計算,但是當我嘗試運行計算時,我的軟件就掛了。 我可以做些什么來簡化此代碼或使其工作? 這是代碼:
CASE When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =4) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.67)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =5) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.67)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =6) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.67)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =7) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.68)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =8) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.68)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =9) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.68)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =10) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.69)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =12) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.69)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =14) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.7)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =16) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.7)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =18) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.71)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =20) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.72)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =22) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.72)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =24) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.73)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =26) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.73)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =28) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.74)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =30) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.75)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =32) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.76)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =34) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.794)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =36) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.828)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =38) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.862)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =40) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.896)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =42) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.93)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =44) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.964)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =46) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.998)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =48) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-1.032)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =50) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-1.066)) THEN -1 ELSE 0 End
When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =52) Then
Case When ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-1.1)) THEN -1 ELSE 0 End
End
為什么你需要一個嵌套的 CASE,你可以簡單地使用 AND
SELECT CASE When ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee] =4) AND ([Dry Fertilizer].[Phosphorus ICP].[Phosphorus] < ([Dry Fertilizer].[Phosphorus Guarantee].[Phosphorus Guarantee]-0.67)) THEN -1
WHEN
WHEN
WHEN ETC
ELSE 0 END AS [YOURCOL]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.