Oracle9iで開発をしております。
月間集計をするにあたり、SQLをどのように書けばよいのか質問させていただきたいと思います。
たとえば、COUNTテーブルというテーブルがあり
年月日 カウント数
2005/09/01 1000
2005/09/01 1000
2005/09/02 2000
2005/09/03 3000
2005/09/05 5000
2005/09/06 6000
というようにデータが入っていたとします。
現在、
SELECT 年月日, SUM(カウント数)
FROM COUNTテーブル
WHERE
COUNT_DATE BETWEEN TO_DATE(to_char(?||'/'||?||'/01')) AND LAST_DAY(TO_DATE(to_char(?||'/'||?||'/01')))
GROUP BY 年月日
としていまして、抽出されるデータは
2005/09/01 2000
2005/09/02 2000
2005/09/03 3000
2005/09/05 5000
2005/09/06 6000
となります。
ここで、2004/09/04や2005/09/07以降2005/09/30までのテーブルには存在
しない日付も抽出したいと思っています。
どのようにすれば抽出できるのでしょうか?
No.4ベストアンサー
- 回答日時:
過ちに気づいた。
select
nvl(年月日,to_date('??/??'||'/'||to_char(R,'dd'),'yy/mm/dd') 年月日,
nvl(カウント数,0) カウント数
(
select 年月日,SUM(カウント数) カウント数
from カウントテーブル
when trunc(年月日,'mm') = to_date('??/??','yy/mm')
group by 年月日
) X,
(select ROWNUM R from
(select * from (select * from dual union all select * from dual)) Y1,
(select * from (select * from dual union all select * from dual)) Y2,
(select * from (select * from dual union all select * from dual)) Y3,
(select * from (select * from dual union all select * from dual)) Y4,
(select * from (select * from dual union all select * from dual)) Y5
) Z
where to_number(to_char(年月日(+),'dd') = R
No.3
- 回答日時:
まったくテストしてない妄想したSQLです。
select 年月日,カウント数
(
select 年月日,SUM(カウント数) カウント数
from カウントテーブル
when trunc(年月日,'mm') = to_date('??/??','yy/mm')
group by 年月日
) X,
(select ROWNUM R from
(select * from (select * from dual union all select * from dual)) Y1,
(select * from (select * from dual union all select * from dual)) Y2,
(select * from (select * from dual union all select * from dual)) Y3,
(select * from (select * from dual union all select * from dual)) Y4,
(select * from (select * from dual union all select * from dual)) Y5
) Z
where to_number(to_char(年月日(+),'dd') = R
本当は、加工処理用に表関数(ユーザ関数)を作ると、
必要件数を導き出すための無駄な問い合わせを、
スッキリさせることができるのですが..
No.2
- 回答日時:
カレンダー表の生成だけがネックと勝手に判断してしまいますが、表関数を使うとよいでしょう。
参考URL:http://pukiwiki.postcle.com/zange/index.php?%C9% …
ご回答ありがとうございます。
表関数というものがあるのですね。
ユーザ関数は使えない状況なのでまた別件で検討してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス SQLで重複排除でcount...
-
MAX値を条件にしたSQLで困って...
-
SQL 複数のテーブルから重複な...
-
sinカーブの表示のさせ方
-
差し込み後、元データを変更し...
-
SELECT 文 GROUP での1件目を...
-
EXISTSを使ったDELETE文
-
Oracleのデータ型、NUMBERについて
-
外部参照してるキーを主キーに...
-
for whichの使い方
-
広告ブロッカーのアドカードと...
-
商品番号を入力すると、商品名...
-
カーソル0件の時にエラーを発生...
-
マイクラPC版のコマンドで効率...
-
1、Rstudioで回帰直線を求める...
-
過剰なオブジェクト指向脳から...
-
sqlで、600行あるテーブルを100...
-
VBAのAccessでDATE型のINSERT
-
フィルターかけた後、重複を除...
-
INSERT文でフィールドの1つだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL 複数のテーブルから重複な...
-
select *, `人口(男)`AND`人口(...
-
set lineで不要な改行が出力さ...
-
同一テーブル内のデータを比較...
-
1つのカラムに複数レコードの...
-
Oracle:グループごとに最大日...
-
アクセス SQLで重複排除でcount...
-
Pro*cのバインド変数をカンマ区...
-
2つのselect文をunion all で...
-
select実行時のロックとcommit...
-
order by区の記述位置
-
パラメータによってDistinctを...
-
Accessで2つのカラムからユニー...
-
SQLServerのストアドで戻り値取...
-
MAX値を条件にしたSQLで困って...
-
SQLで小数点のついたべき乗を計...
-
ブルースクリーンの対処法
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
おすすめ情報