SQLServer2005初心者ですが、おわかりになる方いらっしゃいましたら、教えてください。お願いします。
やりたいことは(下記は間違いのSELECT文ですが)
SELECT
Nomber
, SUM(ISNULL(CASE WHEN KenYY + KenMM = '200711'
THEN Siyoryo ELSE 0 END, 0)) AS '2007年11月'
, SUM(ISNULL(CASE WHEN KenYY + KenMM = '200712'
THEN Siyoryo ELSE 0 END, 0)) AS '2007年12月'
, MAX(ISNULL(CASE WHEN RecNO = MIN(RecNO) THEN Sedai
ELSE '' END, ''))Sedai_MIN
, MAX(ISNULL(CASE WHEN RecNO = MAX(RecNO) THEN Sedai
ELSE '' END, ''))Sedai_MAX
FROM
TABLE
GROUP BY
Nomber
で、SELECTの最後のSedai_MIN,Sedai_MAXで集計関数を2回使っているので、エラーがでるのは分かるのですが、始めのMAXを消すとGROUPBY句にSedaiとRecNOが含まれていないというエラーがでて、GROUPBYに追加すると、同じNomberが複数でてしまうのです。
同じNomberは1つしか出ないようにする場合、上記のSELECT文をどのように変更すればよろしいのでしょうか?
回答よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
現在、実際に試せる環境が無いので若干文法が間違っているかもしれませんが、以下の内容でいけるのではないかと思います。
SELECT
T01.Nomber
,SUM(ISNULL(CASE WHEN KenYY + KenMM = '200711' THEN Siyoryo ELSE 0 END, 0)) AS 2007年11月
,SUM(ISNULL(CASE WHEN KenYY + KenMM = '200712' THEN Siyoryo ELSE 0 END, 0)) AS 2007年12月
,MAX(ISNULL(CASE WHEN T01.RecNO = T02.MIN_RecNO THEN Sedai ELSE 0 END, 0)) AS Sedai_MIN
,MAX(ISNULL(CASE WHEN T01.RecNO = T02.MAX_RecNO THEN Sedai ELSE 0 END, 0)) AS Sedai_MAX
FROM TABLE T01
INNER JOIN
(SELECT Nomber
,MIN(RecNO) AS MIN_RecNO
,MAX(RecNO) AS MAX_RecNO
FROM TABLE
GROUP BY Nomber) T02
ON T01.Nomber = T02.Nomber
GROUP BY T01.Nomber
No.2
- 回答日時:
補足ありがとうございます。
えーと、再度確認なのですが、
Sedai_MIN=Nomberの中で一番小さいRecNOのレコードのSedai
Sedai_MAX=Nomberの中で一番大きいRecNOのレコードのSedai
でしょうか??
出力結果の例だと、単純に
MIN(Sedai) AS Sedai_MIN,
MAX(Sedai) AS Sedai_MAX
で済む様に思えるのですが。。。
この回答への補足
またまた回答ありがとうございます。
Sedai_MIN=Nomberの中で一番小さいRecNOのレコードのSedai
Sedai_MAX=Nomberの中で一番大きいRecNOのレコードのSedai
であっています。
力結果
Nomber 2007年11月 2007年12月 Sedai_MIN Sedai_MAX
01 0 100 1 2←間違いでした
02 100 200 4 4
03 30 0 1 1
スミマセン、補足の訂正です。
出力結果
Nomber 2007年11月 2007年12月 Sedai_MIN Sedai_MAX
01 0 100 1 2←間違いでした
02 100 200 4 4
03 30 0 1 1
でした。すみません。
申し訳ございませんが、よろしくお願いいたします。
No.1
- 回答日時:
テーブル構造、KEY項目については、どの様な設定に
なっているのでしょうか?
また可能であれば、
テーブル内のデータ、及び出力結果の例などを書いて頂けると
回答しやすいかと思います。
この回答への補足
TABLE
Nomber RecNO KenYY KenMM Sedai Siyoryo
01 01 2007 12 1 100
01 04 2007 09 3 40
01 10 2006 11 2 370
02 01 2007 12 4 200
02 03 2006 11 4 100
03 02 2007 11 1 30
03 08 2006 07 1 100
(KEYはNomberです)
出力結果
Nomber 2007年11月 2007年12月 Sedai_MIN Sedai_MAX
01 0 100 1 3
02 100 200 4 4
03 30 0 1 1
すみません、説明不足で。
また回答よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
SQLServerで同一条件レコードの...
-
テーブルのレコード削除ができ...
-
Access 1レコードずつcsvで出力...
-
ManagementStudioからのデータ削除
-
2つの項目が重複するレコード...
-
Access 削除クエリが重い
-
3つ以上のテーブルをUNIONする...
-
delete⇒insert
-
Accessでの禁止文字チェック
-
数百万件レコードのdelete
-
重複したものをのぞいて、レコ...
-
ACCESS2002、レコードのインポ...
-
ACCESSファイルを開こうとする...
-
Access2000について
-
「マスタ」と「テーブル」の違...
-
sqlserverで集計結果をUPDATEし...
-
accessのロック
-
mysql IN句に1データだけ指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessにインポートしたら並び...
-
3つ以上のテーブルをUNIONする...
-
データの二重表示の原因
-
Accessで重複したデータを一件...
-
SQLServerで同一条件レコードの...
-
2つの項目が重複するレコード...
-
Access 1レコードずつcsvで出力...
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access カレントレコードがあり...
-
Accessでの排他制御
-
Access 削除クエリが重い
-
数百万件レコードのdelete
-
ManagementStudioからのデータ削除
-
(ACCESS)並び替えをしないで...
-
ACCESS【更新クエリの中断がで...
-
Accessでの禁止文字チェック
-
SQLデータ修正時に『このレコー...
-
非連結サブフォームのレコード...
-
ACCESSファイルを開こうとする...
おすすめ情報