月別の売上を集計するには?


ひろみ  2006-10-19 21:53:15  No: 23597

SQLで日付(西暦)を月ごとにグループ化する方法がわかりません。
よろしくお願いいたします。

売上テーブル(URIAGE)
①売上番号(SLIPNO)
②売上日(SLIPDATE)
③売上金額(TOTALPRICE)

1,2006/01/01,1000
2,2006/01/10,2000
3,2006/02/02,,2000
4,2006/03/03,3000
5,2006/04/04,4000
6,2006/05/05,4444,4000,A004,得意先4

西暦を画面から入力して
①月別の売上一覧表を抽出するには?
1   2   3   4   5
3000 2000 3000 4000 4000

SELECT U.SLIPDATE,CAST(SUM(TOTALPRICE) AS INT)
FROM
URIAGE U
WHERE
EXTRACT (YEAR FROM U.SLIPDATE)=:NEN
GROUP BY U.SLIPDATE
ORDER BY U.SLIPDATE


GTR  2006-10-19 22:14:02  No: 23598

Oracleで説明します。

2006年の1月から12月を集計
Select 

 SUM(DECODE(Substr(SLIPDATE,6,2),'01',TOTALPRICE,0)) as M1
,SUM(DECODE(Substr(SLIPDATE,6,2),'02',TOTALPRICE,0)) as M2
,SUM(DECODE(Substr(SLIPDATE,6,2),'03',TOTALPRICE,0)) as M3
,SUM(DECODE(Substr(SLIPDATE,6,2),'04',TOTALPRICE,0)) as M4
,SUM(DECODE(Substr(SLIPDATE,6,2),'05',TOTALPRICE,0)) as M5
,SUM(DECODE(Substr(SLIPDATE,6,2),'06',TOTALPRICE,0)) as M6
,SUM(DECODE(Substr(SLIPDATE,6,2),'07',TOTALPRICE,0)) as M7
,SUM(DECODE(Substr(SLIPDATE,6,2),'08',TOTALPRICE,0)) as M8
,SUM(DECODE(Substr(SLIPDATE,6,2),'09',TOTALPRICE,0)) as M9
,SUM(DECODE(Substr(SLIPDATE,6,2),'10',TOTALPRICE,0)) as M11
,SUM(DECODE(Substr(SLIPDATE,6,2),'11',TOTALPRICE,0)) as M11
,SUM(DECODE(Substr(SLIPDATE,6,2),'12',TOTALPRICE,0)) as M12

 from URIAGE
WHere SLIPDATE >= '20060101'
and   SLIPDATE <= '20061231'

SLIPDATAがDATE型でしたらString型にしてください。


ひろみ  2006-10-19 22:30:25  No: 23599

GTRさんありがとうございます。

余談ですがGTRに乗ってました。

DB:interbase(FireBird)

SLIPDATA:TIMESTAMP型

GTRさんの参考に調べてみます。


GTR  2006-10-20 04:06:44  No: 23600

FireBirdだとDecode関数が無かったと思います。
UDFを拡張しなくてはいけないですね。
サンプルです。(WIndows+Delphi)
function Decode(value1, value2, matchResult, unmatchResult : PChar) : PChar; cdecl; export;
var s : String;
begin
  if (strcomp(value1, value2) = 0) then s := matchResult
  else                                  s := unmatchResult;
  Result := MakeResultString(PChar(s), nil, 0);
end;
freeUDFLibなどダウンロードして参考にされてください。
http://www.ibsurgeon.com/links.html
の下の方にあると思います。


Basser  2006-10-23 19:14:28  No: 23601

GROUP BY
  EXTRACT(YEAR FROM SLIPDATE), EXTRACT(MONTH FROM SLIPDATE)

でグループ化できませんか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加