質問: 連番のmin, maxを取得したい 連番のmin, maxを取得したい 下記のデータが格納されたテーブルで、 部署コードのまとまりごとに、連番のmin, maxを取得したいと 考えています。 sqlで、期待する結果を取得したいのですが、 なかなかよい案がなく、困っております。 何かよいアイデアがあれば、ご教授頂きたいと思い、質問致しました。 対象dbは、 sqlserver2008 standard editionです。 検索するテーブル renban busyo_cd ---------------------------------------- 1 aaa 2 aaa 3 aaa 4 aaa 11 bbb 12 bbb 13 bbb 21 aaa 22 aaa 23 aaa 24 aaa ---------------------------------------- 期待する結果 busyo_cd renban_min renban_max -------------------------------------------------------------- aaa 1 4 bbb 11 13 aaa 21 24 -------------------------------------------------------------- ※データは、あらかじめ連番(昇順)でソートされています ※連番は、部署コードが同じ間は、続き番号となっていますが、 部署コードが変わると、続き番号にならない可能性があります。 ※同じ部署コードのまとまりが、複数回出てくることがあります。 (上記例でいえば、連番1~4のaaaと、21~24のaaaは同じ部署コードです) よろしくお願い致します。
回答: select busyo_cd,min(renban), max(renban) from ( select renban,busyo_cd, isnull( (select max(renban) from @busyo as s2 where s2.renban < s1.renban and s2.busyo_cd <> s1.busyo_cd),0) as grp from @busyo as s1 ) tt group by tt.grp,busyo_cd order by tt.grp