2017-07-10 3 views
1

私は2つのカラムを持つこの絵を持っている:Access 2000のSQLで数値範囲の行をグループ化しますか?

group by access 2000

「povrsinaは」平方メートルで領域サイズです。これは、(0 < povrsina < = 10)、(10 < povrsina < = 30)、(30 < povrsina < = 60)等...

"tipprod" テキスト値を持つことができ、例えば、範囲に分類することができます012、03、04のように...

"povrsina"が持つデータをすべてグループ化する必要があります。 私はこのようになりますアクセスにヘルパー表を作成しました:

group by access 2000

あなたは範囲を見ることができます。私はメインテーブルで試してみましたが、正しい結果が得られるかどうかはわかりません。それは本当に私のヘルパーテーブルの範囲に対して "povrsina"値をチェックしていますか?

どのようにAccess 2000でこれを行うことができますか?

答えて

2

をあなたの範囲を定義するために、povrsina_minであなたのガイドテーブルにpovrsina_maxを二つのフィールドを追加することができます。

povrsina_tag|povrsina_min|povrsina_max 
10   |0   |10 
30   |11   |30 
.... 

その後、でpovrsina < = povrsina_maxとpovrsina> = povrsina_minの場所を追加してガイドテーブルに対してCROSS JOINでクエリを実行できます

そして、GROUP BY povrsina_tagとtipprodを使うことができます。

+0

これはおそらくもっと洗練された解決策です.VBAは含まれません – Vityata

+0

技術的にはCROSS JOINはAccess 2000には存在しませんが、プレーンなSQLで入手する方法があります:https://stackoverflow.com/questions/1231676/使い方 - クロス・イン・イン・アクセス – Vlad

1

ちょっと推測します...このようなことを試すことができますか?

一般に
select MainTable.Povishnina as [Povishnina], count(*) as [number of occurences] 
from (
    select case 
    when score between 0 and 10 then ' do 10 m2' 
    when score between 30 and 50 then ' od 11 do 30 m2' 
    else 'Nad 3000 m2' 
    from scores) MyTable 
group by MainTable.Povishnina 

、この質問を見てみましょう: In SQL, how can you "group by" in ranges?

1

使用できるAccessクエリでは:

Select 
    *, 
    (Select Top 1 T.PovrsinaM2 From T13_Povrshina As T 
    Where T.povrsina <= YourTable.povrsina 
    Order By T.povrsina Desc) 
From 
    YourTable 

あなたは少しT13_Povrshinaを調整する必要があります。

関連する問題