簡體   English   中英

在CASE - SQL中選擇語句

[英]Select statement inside CASE - SQL

我試圖找出以下邏輯的正確代碼。 如果第一列中存在特定值,則顯示該特定記錄的第二列中的值。 有人可以幫忙嗎? 謝謝。

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

     ELSE TableA.Column6
END AS [Test]

你幾乎就在那里刪除select from case statement 由於所有值都來自同一個表,因此不需要select in case語句只保留column name ,它將獲取相應的列值。

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

嘗試這個:

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;

您已經在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
...

你可以把它寫成:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM