2016-04-01 6 views
-1

私はこの(100億行)のように見えるテーブルを持っている異なる選択奇数で基準とさえイベント


AID BID CID  
    1 2 1 
    1 6 9 
    0 1 4 
    1 3 2 
    1 100 2 
    0 4 2 
    0 0 1 

AIDは0または1 BIDとCID可能性ができました何でもあります。 AID = 1、AID = 0、AID = 1、AID = 0のイベントを最初に選択します。 アイデアは、等しい数のAID = 1とAID = 0イベントを選択することです。 どうすれば実現できますか?

期待される結果は

AID BID CID  
    1  2  1  
    0  1  4  
    1  6  9  
    0  4  2  
    1  3  2  
    0  0  1  
+1

ここで期待された結果でしょうか? –

+1

希望の結果と試した質問がある場合はそれを入力してください。あなたは説明がはっきりしていません。 – FLICKER

+0

あなたが今までに試したことを投稿してください。そしてそれがいかに失敗したか。それまではもう一つの「コードを教えてください」という質問だけです。 –

答えて

3
;WITH cte AS (
select * 
FROM (VALUES 
(1, 2, 1), 
(1, 6, 9), 
(0, 1, 4), 
(1, 3, 2), 
(1, 100, 2), 
(0, 4, 2), 
(0, 0, 1) 
) as t(AID, BID, CID) 
), 
withrow AS (
SELECT ROW_NUMBER() OVER (PARTITION BY AID ORDER BY AID) as RN, * 
FROM cte) 

SELECT AID,BID,CID 
FROM withrow 
ORDER BY RN asc , aid desc 

出力です:

AID   BID   CID 
----------- ----------- ----------- 
1   100   2 
0   4   2 
1   3   2 
0   1   4 
1   6   9 
0   0   1 
1   2   1 

(7 row(s) affected) 
+0

良いアプローチ.. –

+0

@pratikgargありがとう!最初の人は私の心を得る。 – gofr1

+0

はい。このアプローチは質問を読んでも私にも聞きました。しかしsqlserverの場合と同様に、私は実現可能性をチェックする必要がありました(私はOracleデータベースを使用しています)。 –

関連する問題