1

私はグリッドビューを持っており、タイプ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

どうすればいいですか?

4

2 に答える 2

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
于 2013-02-18T05:43:26.690 に答える
0

ApproverTypeID は MAX() 関数で使用されるため、GROUP BY 句の 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
于 2013-02-18T08:27:27.553 に答える