2012-11-23 30 views
5

Tôi đang làm việc trong MS Access 2003.SQL 2 Bàn, được đếm trên đầu tiên, nhóm thứ hai bởi

Tôi có Bảng với hồ sơ của rằng loại cấu trúc:

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 ... 
... 

Tôi cũng có bảng trong đó có xứ Và Destination Codes Xử lí

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

Những gì tôi cần là để có được 2 bàn mà sẽ đếm hồ sơ dựa trên các tiêu chí liên quan đến thuộc tính tôi chỉ định nhưng nhóm lại theo:
012.351.1. Xuất xứ Lục và Lục Destination
2. Xuất xứ Continent và Destination Nước

ví dụ:

Trường hợp 1.

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

Trường hợp 2.

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

Điều đó có thể được thực hiện theo cách để tôi có thể thêm nhiều cột hơn/crit eria dễ dàng đủ?

+0

Trong tình huống tương tự, tôi đã sử dụng biểu mẫu cho phép người dùng chọn tiêu chí và xây dựng các truy vấn trong VBA. Tôi không chắc chắn rằng bạn sẽ nhận được một giải pháp thỏa đáng chỉ sql. – Fionnuala

Trả lời

1

Trường hợp 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 

Trường hợp 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 
+0

Xin lưu ý rằng các thẻ bao gồm MS Access, SQL là một thẻ chung, vì vậy câu trả lời cụ thể này yêu cầu MS Access SQL. Ở trên sẽ không hoạt động. – Fionnuala

+0

Tôi không thấy làm thế nào tôi có thể áp dụng tiêu chí trên các thuộc tính để có được số lượng cụ thể bằng cách sử dụng câu trả lời này. cũng truy cập ném lỗi cú pháp trong mệnh đề FROM. – user1155872

+0

bạn nên thêm các thuộc tính của bạn trong nhóm và chọn theo, tất nhiên nó sẽ ném một lỗi, có ...- trong tuyên bố – ogres

0

Bạn có thể tham gia truy vấn với các truy vấn, vì vậy đây là một crosstab cho Nam/Nữ (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; 

Đây là độ tuổi:

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); 

này kết hợp hai:

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

Như bạn có thể thấy, đây có thể được dễ dàng hơn để quản lý trong VBA.

Các vấn đề liên quan