出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[4090] Transform〜Pivot文なしでクロス表を作るには…
投稿者:INA00さん 2004/02/28 21:20:59
INA00 です。お世話になります。
「ASPでクロス表を作成する」という課題に取り組んでいるの
ですが、うまくいきません…
データはAccess2000で作成されており、構造は
品目コード 支店コード 月コード 売上額
001     01     01   100
001     02     01   200
002     01     02   300

のようになっています。
このデータから
      1月   2月  …  12月
品目001 (1月売上)(2月売上) (12月売上)
品目002
  :

という表を閲覧できる仕組みをASPで作ろうと考えています。

クロス表を作成する際、AccessのTransform〜Pivot文を使うと
一発なのですが、これはMSの独自仕様だそうで、他のSQLサーバとの
互換性を考えて使わずに作成したいのです。

そこで次のような手順で作成しようとしました。

1.1月の品目別売上げをテーブルTEMP1に書き出す
2.2月の品目別売上げをテーブルTEMP2に書き出す
3.Where文で、TEMP1とTEMP2の同じ品目を接続し、
(品目コード,1月売上合計,2月売上合計)をTEMP3に書き出す
4.TEMP1,TEMP2 をDROPする。
5.ALTER TABLEでTEMP3をTEMP1に名称変更
6.3月の品目別売上げをテーブルTEMP2に書き出す
7.Where文で、TEMP1とTEMP2の同じ品目を接続し、
(品目コード,1月売上合計,2月売上合計,3月売上げ合計)を
TEMP3に書き出す
8.TEMP1,TEMP2 をDROPする。
9.ALTER TABLEでTEMP3をTEMP1に名称変更

と、これを12月まで繰り返して作っていきます。

しかし実際のコーディングでつまづきました。
ひとまず「1月と2月の売上高を集計して、TEMP3に出力する」
ことを考え、実験的に以下のようにコーディングしました

’コネクション確立
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
Server.Mappath("年間売上.mdb")
'dbからデータを取り出す
Set ObjRS = Server.CreateObject("ADODB.Recordset")
'SQL文を作成

StrSQL1 = "SELECT 品目コード, SUM(売上額) as 1月売上 INSERT INTO TEMP1 FROM 年間売上 WHERE 月=01 
GROUP BY 品目コード"

StrSQL2 = "SELECT 品目コード, SUM(売上額) as 2月売上 INSERT INTO TEMP2 FROM 年間売上 WHERE 月=02 
GROUP BY 品目コード"

StrSQL3 = "SELECT TEMP1.品目コード,TEMP1.1月売上,
TEMP2.2月売上 INSERT INTO TEMP3
FROM TEMP1,TEMP2 WHERE TEMP1.品目コード=TEMP2.品目コード"

StrSQL = StrSQL1 & StrSQL2 & StrSQL3
objRS.open StrSQL,ObjConn


これで"年間売上.mdb"にTEMP3が追加され、TEMP3には品目コードと1月と2月の売上げが入る、と考えたのですが、実際には

HTTP500.100 ASPエラー 
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] クエリ式 'HS SELECT TEMP1.HS' の 構文エラー

となってしまいます。
SELECTを2連続で使うことはできないのか、それとも一度DBをcloseしないといけないのか、原因がよくわかりません。

あるいはもっと別な方法があるのでしょうか…
同じことを経験された方、ご教授いただけましたら幸甚です。
どうぞよろしくお願い致します。



Transform〜Pivot文なしでクロス表を作るには…   INA00さん [2004/02/28 21:20:59] [4090]
  Re:Transform〜Pivot文なしでクロス表を作るには…   YasNet(管理人)さん [2004/03/01 9:26:32] [4091]
    お返事ありがとうございました。ただ…   INA00さん [2004/03/01 12:36:43] [4095]


TreeBBS For ASP V.0.1.3
Program By YasNet