我正在尝试找出以下逻辑的正确代码。如果第一列中存在特定值,则显示该特定记录的第二列中的值。 有人可以帮忙吗?感谢。
CASE WHEN TableA.Column1 = 'a' THEN 'select TableA.Column2 '
WHEN TableA.Column4 = 'b' THEN 'select TableA.Column5'
ELSE TableA.Column6
END AS [Test]
答案 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