• 締切済み

連番の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は同じ部署コードです) よろしくお願い致します。

みんなの回答

回答No.2

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

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

RENBAN が INTEGER で主キーもしくは UNIQUE NOT NULL とすれば、下記の様なSQLで出来るかと。 (テーブル名は仮に「BUSYO」としました) -------------------------------- SELECT B1.BUSYO_CD, B1.RENBAN AS RENBAN_MIN, B2.RENBAN AS RENBAN_MAX FROM BUSYO B1, BUSYO B2 WHERE NOT EXISTS ( SELECT 'x' FROM BUSYO B3 WHERE B1.BUSYO_CD = B3.BUSYO_CD AND B3.RENBAN = B1.RENBAN - 1 ) AND NOT EXISTS ( SELECT 'x' FROM BUSYO B3 WHERE B2.BUSYO_CD = B3.BUSYO_CD AND B3.RENBAN = B2.RENBAN + 1 ) AND B1.BUSYO_CD = B2.BUSYO_CD AND B1.RENBAN <= B2.RENBAN AND ( SELECT COUNT(*) FROM BUSYO B3 WHERE B1.BUSYO_CD = B3.BUSYO_CD AND B3.RENBAN BETWEEN B1.RENBAN AND B2.RENBAN ) = B2.RENBAN - B1.RENBAN + 1 ORDER BY RENBAN_MIN; -------------------------------- WHERE句は下記の様な意味になります。 ・最初のNOT EXIST句はB1が同一部署の連番の先頭で有る条件 ・2番目のNOT EXIST句はB2が同一部署の連番の最後で有る条件 ・最後のSELECT COUNT(*)はB1 と B2 の間に同一部署だけが抜けがなく詰まっているかの条件

参考URL:
http://codezine.jp/article/detail/1076?p=2
mzk1644
質問者

お礼

想定していた動きになりました。 ありがとうございます。

関連するQ&A