2017-07-25 65 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 –