簡體   English   中英

如何編寫SQL“ case”命令?

[英]How to write SQL 'case' Command?

我有一個網格視圖,它具有類型1和類型2列,它們綁定到type1type2

然后,我向它添加一個面頰框。

我想綁定數據,但是查詢數據重復。

這是我的查詢

SELECT DISTINCT 
    userId, 
    MAX(CASE WHEN ApproverTypeID = 1 THEN ApproverTypeID END) AS Type1, 
    MAX(CASE WHEN ApproverTypeID = 2 THEN ApproverTypeID END) AS Type2
FROM         
    table1
GROUP BY 
    ApproverTypeID, userId

我原來的桌子是這樣的。

Name        Type
---------
    Name1     1
    Name2     1
    Name1     0

但是我想要這樣的輸出...

Name       Type1    Type2
----------------
    Name1    1       0
    Name2    1       null

我該怎么做?

由於您沒有提到正在使用的數據庫服務器,因此以下查詢將在幾乎所有RDBMS上運行( 但不是全部

SELECT  Name,
        MAX(CASE WHEN Type = 1 THEN Type END) Type1,
        MAX(CASE WHEN Type = 2 THEN Type END) Type2
FROM    tableName
GROUP   By Name

您只需要刪除GROUP BY子句的ApproverTypeID,因為在MAX()函數中使用了ApproverTypeID。 之后,您還可以刪除多余的DISTINCT子句。 你會收到你想要的

SELECT userId, 
       MAX(CASE WHEN ApproverTypeID = 1 THEN ApproverTypeID END) AS Type1, 
       MAX(CASE WHEN ApproverTypeID = 2 THEN ApproverTypeID END) AS Type2
FROM table1
GROUP BY userId

暫無
暫無

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

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