5

MS Access 2003 で作業しています。

そのような構造のレコードを含むテーブルがあります。

ID, Origin, Destination, Attr1, Attr2, Attr3, ... AttrX

for example:

1,  1000,   1100,        20,    M,     5 ...
2,  1000,   1105,        30,    F,     5 ...
3,  1001,   1000,        15,    M,     10 ...
...

出発地と目的地のコードがグループ化されたテーブルもあります

Code, Country, Continent
1000, Albania, Europe
1001, Belgium, Europe
...
1100, China,   Asia
1105, Japan,   Asia
...

必要なのは、指定した属性に関連する基準に基づいてレコードをカウントする 2 つのテーブルを取得することですが、次のようにグループ化されてい ます

例えば:

ケース1。

Origin, Destination, Total, Females, Males, Older than 20, Younger than 20, ...
Europe, China,       300,   100,     200,   120,           180 ...
Europe, Japan,       150,   100,     50, ...
...

ケース 2。

Origin, Destination, Total, Females, Males, Older than 20, Younger than 20, ...
Europe, Asia,        1500,  700,     800 ...
Asia,   Europe,      1200, ...
...

列/基準を簡単に追加できる方法でそれを行うことはできますか?

4

2 に答える 2

1

ケース 1:

select count(1) as total ,t2.continent,t3.country,t1.attr1,t1.attr2,t1.attr3 ... t1.attrX from table1 t1
join table2 t2 on t1.origin = t2.code
join table3 t3 on t1.destination = t3.code
group by t2.continent,t3.country,t1.attr1,t1.attr2,t1.attr3 ... t1.attrX 
order by total desc

ケース 2:

select count(1) as total ,t2.continent,t3.continent,t1.attr1,t1.attr2,t1.attr3 ... t1.attrX from table1 t1
join table2 t2 on t1.origin = t2.code
join table3 t3 on t1.destination = t3.code
group by t2.continent,t3.continent,t1.attr1,t1.attr2,t1.attr3 ... t1.attrX 
order by total desc
于 2012-11-23T13:22:37.990 に答える
0

クエリとクエリを結合できるので、これは男性/女性 (attr2) のクロス集計です。

TRANSFORM Count(Data.ID) AS CountOfID
SELECT Data.Origin, Data.Destination, Count(Data.ID) AS Total
FROM Data
GROUP BY Data.Origin, Data.Destination
PIVOT Data.Attr2;

これは年齢です:

TRANSFORM Count(Data.ID) AS CountOfID
SELECT Data.Origin, Data.Destination, Count(Data.ID) AS Total
FROM Data
GROUP BY Data.Origin, Data.Destination
PIVOT Partition([Attr1],10,100,10);

これは、次の 2 つを組み合わせたものです。

SELECT Ages.Origin, Ages.Destination, Ages.Total,
       MF.F, MF.M, Ages.[10: 19], Ages.[20: 29], Ages.[30: 39]
FROM Ages, MF;

ご覧のとおり、これは VBA で管理する方が簡単です。

于 2012-11-23T22:53:30.537 に答える