[英]How to write SQL 'case' Command?
我有一個網格視圖,它具有類型1和類型2列,它們綁定到type1
和type2
。
然后,我向它添加一個面頰框。
我想綁定數據,但是查詢數據重復。
這是我的查詢
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.