- - PR -
副問い合わせについて(COUNT)
1
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-22 15:54
ORACLEのSQL文を作成していて詰まってしまったので質問させてください。
使用しているORACLEは、ORACLE10gです。 下記のように、出力したいと思っています。 <条件> 1.コード別に出力する。 2.(データA、データB、データC)を1つの列とみなし、コード別の件数を出力する。 3.コード別の金額を出力する。 <例示> テーブルAがあります。 テーブルA コード データA データB データC 金額A 012 1 2 3 100 012 1 2 3 200 012 1 2 4 150 013 1 2 3 100 013 1 2 4 200 013 1 2 5 150 結果 コード 件数 金額A 012 2 450 013 3 450 <SQL> SELECT コード,count(distinct データA,データB,データC),sum(金額A) FROM テーブルA GROUP BY コード 上記のSQLを実行すると「引数の個数エラー」になってしまいます。 どのようにSQLを作成すればいいのでしょうか? よろしくお願い致します。 ※文字化けしてしまっていました。 訂正が遅くなってしまい、申し訳ありませんでした。 未記入(常連さん)ありがとうございました。 [ メッセージ編集済み 編集者: TAKAMIKI 編集日時 2006-02-28 22:28 ] | ||||||||||||||||
|
投稿日時: 2006-02-22 17:37
ORACLEのSQL文を作成していて詰まってしまったので質問させてください。
使用しているORACLEは、ORACLE10gです。 下記のように、出力したいと思っています。 <条件> 1.コード別に出力する。 2.(データA、データB、データC)を1つの列とみなし、コード別の件数を出力する。 3.コード別の金額を出力する。 <例示> テーブルAがあります。 テーブルA コード データA データB データC 金額A 012 1 2 3 100 012 1 2 3 200 012 1 2 4 150 013 1 2 3 100 013 1 2 4 200 013 1 2 5 150 結果 コード 件数 金額A 012 2 450 013 3 450 <SQL> SELECT コード,count(distinct データA,データB,データC),sum(金額A) FROM テーブルA GROUP BY コード 上記のSQLを実行すると「引数の個数エラー」になってしまいます。 どのようにSQLを作成すればいいのでしょうか? よろしくお願い致します。 | ||||||||||||||||
|
投稿日時: 2006-02-22 18:50
全角だとサンプルを作りにくかったので、
下記のように変更してます。 テーブルA → sample コード → code データA → data_a データB → data_b データC → data_c 金額A → money こんな無理やりなSQLではイヤですか? select c.code, c.cnt, s.summary from ( select distinct code, count(*) as cnt from ( select distinct code, data_a, data_b, data_c from sample ) group by code ) c inner join ( select distinct code, sum(money) over ( partition by code ) as summary from sample ) s on ( c.code = s.code ) CODE CNT SUMMARY ---------- ---------- ---------- 12 2 450 13 3 450 | ||||||||||||||||
|
投稿日時: 2006-02-22 19:13
この部分に限って言えば、ひとつにすればいいだけ・・・ データA,データB,データCが文字データなら
でいいでしょうし、数値データなら
とか、 仮に、データA,データB,データCが2桁までの数値とかであれば、
ということも出来ます。 ただし、データA,データB,データC にインデックスがあっても使われません。 結合したカラムを追加するとか、ファンクションインデックスを作るとかしか ないですね。 [ メッセージ編集済み 編集者: かずくん 編集日時 2006-02-22 19:14 ] [ メッセージ編集済み 編集者: かずくん 編集日時 2006-02-23 09:14 ] | ||||||||||||||||
|
投稿日時: 2006-02-23 00:30
| ||||||||||||||||
|
投稿日時: 2006-02-28 22:31
返答が遅くなってしまい、申し訳ございません。
温州蜜柑さん、かずくんさん、とんくまさん返答ありがとうございます。 かずくんさんのおっしゃるとおり、DISTINCT句を『||』を使って列名を結合させるとうまくいきました。 ありがとうございました。 | ||||||||||||||||
1
