2013-02-18 142 views
1

我有一個網格視圖,它具有類型1和類型2列,它綁定到type1type2如何編寫SQL'case'命令?

然後我添加一個臉頰框。

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

這是我的查詢

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 

哪有我這麼做?

+0

你的問題還不夠清楚。請解釋你的輸出內容。 – Rachcha 2013-02-18 05:44:14

+1

您正在使用哪些DBMS? – pyrospade 2013-02-18 05:44:32

+1

當您使用GROUP BY時,您並不需要DISTINCT。 – 2013-02-18 06:06:42

回答

0

你只需要刪除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 
1

因爲你沒有提到你正在使用的數據庫服務器,下面的查詢將工作在幾乎所有的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