2016-11-11 9 views
1

私はこのようなテーブルを持っている:行番号とGROUP BYをアクセスに追加する方法は?

Tabel1

今、私はそれは難しいことではありませんフィールド1、BY GROUPしたいです。その後、各グループに行番号を追加したいと思います。そして最後に..これはAccessで行われなければなりませんが、これはもちろん少し異なります。だから、これは私が持っているコードです:だから

SELECT A.*, (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum 
FROM Tabel1 AS A 
ORDER BY A.ID; 

Result

、これはうまく動作しますが、今、私はグループにそれをすることはできません。それをどのようにグループ化できますか?

+0

は、」あなたはアクセスでROW_NUMBER()関数を使用することはできますか? – VDK

+0

あなたの出力はどのように見えますか? – Hambone

+0

@ Vijey--私はMS Accessがウィンドウ機能をサポートしているとは思わない – Hambone

答えて

0

あなたはサブクエリであなたの全体のクエリをラップすることができます:あなたのクエリの出力は表だったかのように

select 
    B.* 
from 
(SELECT 
    A.*, 
    (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum 
    FROM Tabel1 AS A 
) as B 
ORDER BY B.ID; 

ここから、あなたが行うことができますが加わります。私はあなたが実際にグループに欲しいものは考えているが、ここでは一例です:

select 
    B.Field1, count (*) as count, max (B.RowNum) as max_row 
from 
(SELECT 
    A.*, 
    (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum 
    FROM Tabel1 AS A 
) as B 
group by 
    b.Field1 

- 私は私が今見ると思う

- 2016年11月14日を編集します。その場合は、まずグループ化を処理するクエリを作成します。

SELECT Field1, min (Id) as min_id, max (id) as max_id 
FROM Table1 
group by Field1 

名この例の目的のために、このクエリTable1_Summary:これは単なる一例です。

今、あなたの新しいクエリで、あなたはあなたの例で行ったまったく同じ方法でTable1_Summaryを参照します:

SELECT 
    t.*, 
    (select count (*) from Table1_Summary t2 where t.Field1 >= t2.Field1) as RowNum 
FROM Table1_Summary t 

あなたは理論的には単一のクエリでこれを行うことができますが、可読性/保守のために、私はそれらを分割しておくことをお勧めしたいと思います。ここでは出力の例です:

enter image description here

+0

最初にグループ化してから行番号を付けたいのですが... –

+0

Gotcha - 編集を参照してください – Hambone

関連する問題