2017-07-25 35 views
-2

我可以在下面的多個條件中使用Case語句。輸出應該是一列,所有以下條件應該是真實的。如果它的真實然後打印'X'否則NULL。我正在使用SQL服務器,並不確定如何使用Case語句來實現。一列中有多個條件

WHERE 
(
    (D.Type = 'abc') 
    AND D.Status = 'C' 
) 
AND 
(
    (
    AAD.D01 IS NOT NULL 
    OR AAD.D02 IS NOT NULL 
    OR AAD.D03 IS NOT NULL 
    OR AAD.D04 IS NOT NULL 
    OR AAD.D05 IS NOT NULL 
    OR AAD.D06 IS NOT NULL 
    OR AAD.D07 IS NOT NULL 
    OR AAD.D08 IS NOT NULL 
    ) 
AND (AAD.B05 = 1) 
OR (AAD.B06 = 1) 
) 
THEN 'X', ELSE '' END AS [Adjusted] 
+1

......你真正的問題是什麼?這個WHERE條款有問題嗎? –

+0

請不要張貼部分查詢。 –

+0

發佈完整的代碼太多的錯誤是有..邏輯錯誤是做丟失'括號' –

回答

0

也許你需要EXISTS,可CASE子句中使用我建議LINQ。

有很簡單的例子:

DECLARE @table1 TABLE (Id int) 
INSERT INTO @table1 VALUES (1), (2), (6), (10) 
SELECT CASE 
     WHEN EXISTS(SELECT * 
        FROM @table1 
        WHERE Id = 1 OR Id = 2) 
     THEN 'X' ELSE '' END AS [Adjusted] 

更換

SELECT * 
    FROM @table1 
    WHERE Id = 1 OR Id = 2 

與實際語句。如果這不是您想要做的,請更新您的問題並提供完整的代碼和更多信息。

+0

我不知道我們可以使用Exists內的case語句很好知道感謝你,我會嘗試這種方法,看看它是否有效。 – user3530157

+1

Case中存在的就是我需要的東西,它像魅力一樣工作。謝謝Rokuto :) – user3530157

0

你需要一個集合,你可以保存你的數據

var datalist = db.Table.Where(d=>d.Type == 'abc').Where(d=>d.Status=='C').Where(AAD=>AAD.D01 != null)...... 
+1

這個問題是'SQL'不是C#與Linq –