在CASE - SQL中选择语句

时间:2014-12-31 13:56:25

标签: sql sql-server select sql-server-2012 case

我正在尝试找出以下逻辑的正确代码。如果第一列中存在特定值,则显示该特定记录的第二列中的值。 有人可以帮忙吗?感谢。

CASE WHEN TableA.Column1 = 'a' THEN 'select TableA.Column2 '
     WHEN TableA.Column4 = 'b' THEN 'select TableA.Column5'

     ELSE TableA.Column6
END AS [Test]

4 个答案:

答案 0 :(得分:6)

你几乎就是从select删除了case statement。由于所有值都来自同一个表,因此只需保留select就不需要column name,它将获取相应的列值。

SELECT CASE
         WHEN Column1 = 'a' THEN Column2
         WHEN Column4 = 'b' THEN Column5
         ELSE Column6
       END AS [Test]
FROM   tableA 

答案 1 :(得分:1)

试试这个:

SELECT (CASE WHEN A.Column1 = 'a' THEN A.Column2
             WHEN A.Column4 = 'b' THEN A.Column5
             ELSE A.Column6
        END) AS [Test]
FROM TableA A;

答案 2 :(得分:1)

您已经在SELECT内,因此内部不需要额外的SELECT

SELECT
    ...
,   CASE WHEN TableA.Column1 = 'a' THEN TableA.Column2
         WHEN TableA.Column4 = 'b' THEN TableA.Column5

         ELSE TableA.Column6
    END AS [Test]
FROM
    TableA
...

答案 3 :(得分:0)

你可以把它写成:

select CASE WHEN TableA.Column1 = 'a' THEN TableA.Column2
     WHEN TableA.Column4 = 'b' THEN TableA.Column5
     ELSE TableA.Column6
END AS [Test]
from tableA

甚至更短的情况:

select CASE TableA.Column1 
     WHEN 'a' THEN TableA.Column2
     WHEN 'b' THEN TableA.Column5
     ELSE TableA.Column6
END AS [Test]
from tableA