目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
109 / 110 ツリー ←次へ | 前へ→

【31】クロス集計のSQL 孫悟空 02/12/6(金) 10:47 Access[未読]
【33】Re:クロス集計のSQL2 孫悟空 02/12/6(金) 11:51 Access[未読]
【34】Re:クロス集計のSQL1 孫悟空 02/12/6(金) 11:53 Access[未読]
【35】Re:クロス集計のSQL1 平社員 02/12/6(金) 12:40 Access[未読]

【31】クロス集計のSQL
Access  孫悟空  - 02/12/6(金) 10:47 -

引用なし
パスワード
   アクセスのクロス集計を一般的なSQLで実現する方法はありますか?

【33】Re:クロス集計のSQL2
Access  孫悟空  - 02/12/6(金) 11:51 -

引用なし
パスワード
   以下の様な構造のテーブルで、
CREATE TABLE
テスト_tbl(
支店 TEXT(10),
部門 TEXT(10),
金額 LONG,
PRIMARY KEY
(支店,部門)
)

以下のようなデータを
    支店    部門        金額
    A    100        400    
    A    200        100    
    A    300        200    
    A    400        300    
    B    100        100    
    B    200        300    
    B    300        150    
    B    400        250    
    C    100        200    
    C    200        200    
    C    300        200    
    C    400        300    
    D    100        500    
    D    200        400    
    D    300        100    
    D    400        200    

支店,部門でクロス集計して
下記のような集計をするには、

支店    100    200    300    400    500    600    700    800    900    部門合計金額
A    400    100    200    300    0    0    0    0    0    1000
B    100    300    150    250    0    0    0    0    0    800
C    200    200    200    300    0    0    0    0    0    900
D    500    400    100    200    0    0    0    0    0    1200

下記のようなSQLで実現出来ます。

SELECT 支店,
sum(iif(部門='100',金額,0)) AS 100,
sum(iif(部門='200',金額,0)) AS 200,
sum(iif(部門='300',金額,0)) AS 300,
sum(iif(部門='400',金額,0)) AS 400,
sum(iif(部門='500',金額,0)) AS 500,
sum(iif(部門='600',金額,0)) AS 600,
sum(iif(部門='700',金額,0)) AS 700,
sum(iif(部門='800',金額,0)) AS 800,
sum(iif(部門='900',金額,0)) AS 900,
sum(金額) AS 部門合計金額
FROM テスト_tbl
GROUP BY 支店
ORDER BY 支店;

【34】Re:クロス集計のSQL1
Access  孫悟空  - 02/12/6(金) 11:53 -

引用なし
パスワード
   以下の様なテーブル定義で

create table
user_tbl(
Namae text(20),
Year text(4),
Month text(3),
Blood text(10),
primary key(
Namae)
)

    Namae    Year    Month    Blood
    みみ     1995    1月    A型
    さすけ    1995    4月    B型
    じろう    1995    1月    O型
    たろう    1995    3月    AB型
    はなこ    1995    2月    A型
    猫    1995    3月    AB型

上記の様なデータを下記のように集計するためには、

Year 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1995 じろう     
1995  さすけ    
1996  たろう    
1997 はなこ     
1998 みみ      
1999  犬    
1999  猫    

下記の様なSQLでクロス集計ができます。
SELECT
Year,
IIf(Month='1月',Namae,Null) AS 1月,
IIf(Month='2月',Namae,Null) AS 2月,
IIf(Month='3月',Namae,Null) AS 3月,
IIf(Month='4月',Namae,Null) AS 4月,
IIf(Month='5月',Namae,Null) AS 5月,
IIf(Month='6月',Namae,Null) AS 6月,
IIf(Month='7月',Namae,Null) AS 7月,
IIf(Month='8月',Namae,Null) AS 8月,
IIf(Month='9月',Namae,Null) AS 9月,
IIf(Month='10月',Namae,Null) AS 10月,
IIf(Month='11月',Namae,Null) AS 11月,
IIf(Month='12月',Namae,Null) AS 12月
FROM user_tbl
Order by Year;

【35】Re:クロス集計のSQL1
Access  平社員  - 02/12/6(金) 12:40 -

引用なし
パスワード
   >
>    Namae    Year    Month    Blood
>    みみ     1995    1月    A型
>    さすけ    1995    4月    B型
>    じろう    1995    1月    O型
>    たろう    1995    3月    AB型
>    はなこ    1995    2月    A型
>    猫    1995    3月    AB型
上記はすべて1995年で保存ですが。
下記には年が違う形で表示されていますが・・・

>上記の様なデータを下記のように集計するためには、
>
>Year 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
>1995 じろう     
>1995  さすけ    
>1996  たろう    
>1997 はなこ     
>1998 みみ      
>1999  犬    
>1999  猫    
>

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
109 / 110 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free