私は、価値の変化の間にある時間を見つける必要がある状況があります。私は単純なgroup by節を試しましたが、重複する変更を排除します。次の例を考えてみましょう:グループ化句を使用するときに日付範囲が重複しないようにするにはどうすればよいですか?
create table #items (
code varchar(4)
, class varchar(4)
, txdate datetime
)
insert into #items (code, class, txdate) values ('A', 'C', '2010-01-01');
insert into #items (code, class, txdate) values ('A', 'C', '2010-01-02');
insert into #items (code, class, txdate) values ('A', 'C', '2010-01-03');
insert into #items (code, class, txdate) values ('A', 'D', '2010-01-04');
insert into #items (code, class, txdate) values ('A', 'D', '2010-01-05');
insert into #items (code, class, txdate) values ('A', 'C', '2010-01-06');
insert into #items (code, class, txdate) values ('A', 'C', '2010-01-07');
insert into #items (code, class, txdate) values ('A', 'D', '2010-01-08');
insert into #items (code, class, txdate) values ('A', 'D', '2010-01-09');
select code
, class
, min(txdate) mindate
, max(txdate) maxdate
from #items
group by code, class
これは、次のような結果(重複日付範囲に注意してください)を返します:
|code|class|mindate |maxdate |
----------------------------------
|A |C |2010-01-01|2010-01-07|
|A |D |2010-01-04|2010-01-09|
を私は、クエリは次のように返しがしたい:
|code|class|mindate |maxdate |
----------------------------------
|A |C |2010-01-01|2010-01-03|
|A |D |2010-01-04|2010-01-05|
|A |C |2010-01-06|2010-01-07|
|A |D |2010-01-08|2010-01-09|
任意のアイデアや提案?
あなたの入力日付はすべて1月に月がありますが、結果の一部には4月があります。ここに置いたときにあなたの結果に数ヶ月と数日を転載しましたか? – CanSpice
@CanSpice:私の日付はyyyy-mm-dd形式を使用しています。私はエラーをキャッチし、それを修正しました。 Thx –
さて、4月の日付を入力する必要があります。入力するのは1月の日付なので4月の日付です。 – CanSpice