2012-01-19 20 views
1

に異なる行からブール結果をマージ私はすべてのため単一行

SearchID Bool1  Bool2 Bool2 
1   1   1  0 
1   0   0  0 
1   1   0  0 
1   0   0  0 
1   0   0  0 

で米国を離れる最初の列IDを省略することができる

ID SearchID Bool1  Bool2 Bool2 
1  1   1   1  0 
1  1   0   0  0 
5  1   1   0  0 
6  1   0   0  0 
9  1   0   0  0 

複数の行

を返す結合照会を有します返されたデータはSearchID 1に適用されますが、すべてのブール値フィールドの結果をマージする行、つまり

SearchID Bool1  Bool2 Bool2 
1   1   1  0 

一つ以上の行があったとして1 IsOnMainを有する1つまたは複数の行があったとして1 自動実行が1であるべきでIsButtonがそこには行が1

ではなかったが、私はこれを処理したいと0でなければなりません1でなければなりません複数の行が返されている可能性があり、各searchidのために一意の行にしたいと思います。

ID SearchID Bool1  Bool2 Bool2 
1  1   1   1  0 
1  1   0   0  0 
5  1   1   0  0 
6  1   0   0  0 
9  1   0   0  0 
3  2   0   0  0 
5  2   0   0  0 
3  3   0   0  0 
9  3   0   0  1 
etc... 

SearchID Bool1  Bool2 Bool2 
1   1   1  0 
2   0   0  0 
3   0   0  1 
etc... 

私は意味がありますか?

答えて

4
SELECT SearchID, 
     CAST(CASE WHEN SUM(CAST(Bool1 AS INT)) > 0 THEN 1 ELSE 0 END AS BIT) AS Bool1, 
     CAST(CASE WHEN SUM(CAST(Bool2 AS INT)) > 0 THEN 1 ELSE 0 END AS BIT) AS Bool2, 
     CAST(CASE WHEN SUM(CAST(Bool3 AS INT)) > 0 THEN 1 ELSE 0 END AS BIT) AS Bool3 
FROM Table 
GROUP BY SearchID 
+0

"オペランドデータ型ビットがサム演算子で無効です"というエラーが発生します。まずそれを変換したいかもしれません。 – vmvadivel

+0

@vmvadivelがテストされました...ヘッドアップのおかげで! –

+0

非常に賢い!魅力を取りました!私はあなたがやっていることを正確に見ています...私の格納されたprocに変更を加えました。再度、感謝します! – Thierry

3
SELECT SearchId 
    , MAX(CAST(Bool1 AS INT)) AS Bool1 
    , MAX(CAST(Bool2 AS INT)) AS Bool2 
    , MAX(CAST(Bool3 AS INT)) AS Bool3 
FROM TableX 
GROUP BY SearchId 
2

あなたはBITデータ型を使用しているなら、あなたは直接にSUMまたはMAX機能を利用することはできません。まずそれを変換する必要があります。

--Sample table 
CREATE TABLE #test 
(
    SearchID INT, 
    Bool1 BIT, 
    Bool2 BIT, 
    Bool3 BIT 
) 
GO 

INSERT #test VALUES (1,1,1,0) 
INSERT #test VALUES (1,0,0,0) 
INSERT #test VALUES (1,1,0,0) 
INSERT #test VALUES (1,0,0,0) 
INSERT #test VALUES (1,0,0,0) 
Go 

SELECT 
    SearchId 
    ,MAX(CONVERT(INT,Bool1)) AS Bool1 
    ,MAX(CONVERT(INT,Bool2)) AS Bool2 
    ,MAX(CONVERT(INT,Bool3)) AS Bool3 
FROM #test 
GROUP BY SearchId 
関連する問題