>  > ハブ一体型アジャストスペーサー エリシオン DBA-RR3 10mm厚

ハブ一体型アジャストスペーサー エリシオン DBA-RR3 10mm厚

ホーム > 便利なT-SQL&クエリー集 > T-SQL で連続する日ごとのデータを日付範囲のデータにまとめる

T-SQL で連続する日ごとのデータを日付範囲のデータにまとめる

    

ハブ一体型アジャストスペーサー エリシオン ハブ一体型アジャストスペーサー 10mm厚 10mm厚 DBA-RR3

日ごとのデータがあって、同じ値が連続する期間を、日付範囲のデータにまとめあげたいような時ありませんか?

例えば 14インチ サマータイヤ セット【バモス ホビオ(HM3、4)】MANARAY ユーロストリーム BV25 ブラックポリッシュ/ダブルブラッククリア 4.5Jx14SINCERA SN832i 165/55R14、日ごとに値段が変動するような商品があって、商品(ItemID)の販売日(SalesDate)ごとの値段(Price)と手数料(HandlingFee)を持つ DIXCEL/ディクセル ブレーキディスクローター PD フロント用 ニッサン SERENA セレナ 年式91/6~99/6 型式KBC23 KBCC23 PD321 1237S、次のようなItemPrice テーブルがあるとします。


商品ごとに値段と手数料が同じ期間を同じグループとして、連続する販売日でまとめた以下のようなデータを取得したいような状況です。

今回はそんな時に使えるクエリーをご紹介したいと思います。


連続する日ごとのデータを日付範囲のデータにまとめるクエリー

まず、今回使う ItemPrice テーブルとデータを生成するスクリプトをは次の通りです。

CREATE TABLE ItemPrice(
 ItemID INT NOT NULL,
 SalesDate DATE NOT NULL,
 Price MONEY NOT NULL,
 HandlingFee MONEY NOT NULL,
 PRIMARY KEY (ItemID, SalesDate)
);
INSERT INTO ItemPrice 
 (ItemID, SalesDate, Price, HandlingFee)
VALUES
 (1, '2018-04-01', 1000, 10),
 (1, '2018-04-02', 1000, 10),
 (1, '2018-04-03', 1000, 10),
 (1, '2018-04-04', 1010, 10),
 (1, '2018-04-05', 1010, 10),
 (1, '2018-04-06', 1010, 8),
 (1, '2018-04-09', 1010, 8),
 (1, '2018-04-10', 1010, 8),
 (2, '2018-04-01', 2000, 20),
 (2, '2018-04-02', 2000, 20),
 (2, '2018-04-03', 2000, 20),
 (2, '2018-04-04', 2000, 20),
 (2, '2018-04-08', 2000, 20),
 (2, '2018-04-09', 2000, 20),
 (2, '2018-04-10', 2000, 20);


まず、値段は関係なく、商品ごとに連続した日付のみ取得してみましょう。

SELECT ItemID,
 MIN(SalesDate) AS SalesDateFrom,
 MAX(SalesDate) AS SalesDateTo
FROM
 (SELECT ItemID,
 SalesDate,
 ROW_NUMBER() OVER (PARTITION BY ItemID 
 ORDER BY SalesDate) AS RowNo1
 FROM ItemPrice) AS T
GROUP BY ItemID, 
 DATEDIFF(dd, RowNo1, SalesDate)
ORDER BY ItemID,
 MIN(SalesDate);

[ 実行結果 ]

クエリーのポイントを見ていきましょう。

まず青で囲まれた部分ですが、サブクエリーの中で ItemID でパティションわけして ヨコハマ ブルーアース BluEarth AE50 225/50R17 4本セット 夏タイヤ aA、 SalesDate 順で ROW_NUMBER を生成しておきます(RowNo1)。 これが基準の番号となります。

そして 、緑で囲まれた部分で RowNo1 と SalesDate の差分(DATEDIFF)でグルーピングすることによって、連続している日付が同じグループになります。


次に、商品ごとに値段と手数料が同じ期間を同じグループとして、連続する販売日の日付範囲でまとめたデータを取得するクエリーはこちらです。

SELECT ItemID,
 MIN(SalesDate) AS SalesDateFrom,
 MAX(SalesDate) AS SalesDateTo,
 Price,
 HandlingFee
FROM
 (SELECT ItemID,
 SalesDate,
 Price,
 HandlingFee,
 ROW_NUMBER() OVER (PARTITION BY ItemID 
 ORDER BY SalesDate) AS RowNo1,
 ROW_NUMBER() OVER (PARTITION BY ItemID, 
 Price, 
 HandlingFee 
 ORDER BY SalesDate) AS RowNo2
 FROM ItemPrice) AS T
GROUP BY ItemID, 
 Price,
 HandlingFee,
 DATEDIFF(dd, RowNo1, SalesDate),
 RowNo1 - RowNo2
ORDER BY ItemID,
 MIN(SalesDate);

[ 実行結果 ]

先ほどの、RowNo1 に加えて Wangan SPL SUSPENSION SYSTEM MONOCEROS スバル インプレッサ GGA用 【車高調】【自動車パーツ】湾岸(ワンガン) サスペンションシステム モノセロス、

ハブ一体型アジャストスペーサー エリシオン DBA-RR3 10mm厚は大特価でご提供し!


ブリヂストン PLAYZ プレイズ PX-RV サマータイヤ 205/55R17 MANARAY EUROSPEED BL10 ホイールセット 4本 17インチ 17 X 7 +50 5穴 114.3


ハブ一体型アジャストスペーサー エリシオン DBA-RR3 10mm厚 USヘッドライト[右ハンドル・日本仕様]マツダ6 LEDヘッドランプ2011年?2012年OFFor Mazda 6 LED For Mazda 6 LED Head Lamp 2011 to 2012 year LF

↓↓↓【送料無料】 195/65R15 15インチ BRANDLE ブランドル M71B 6J 6.00-15 YOKOHAMA ヨコハマ ブルーアース AE-01F SALE サマータイヤ ホイール4本セット【YOsum18】;INNO/イノー キャリア車種別セット マツダ スクラム DG52・DG62・DH52 H11.1~H17.9 ハイルーフ車用 IN-MDK + IN-B127;ゲラン ランスタンドゲランEDP 50ml(オーデパルファム)【香水】【沖縄・離島は送料無料対象外】 (6001584), 【ラコステ】 ドリーム オブ ピンク オーデトワレ・スプレータイプ 50ml 【香水・フレグランス:フルボトル:レディース・女性用】【ピンク】【LACOSTE DREAM OF PINK EAU DE TOILETTE SPRAY】, アミノシールド トリートメント COE 1000g詰め替え ノンシリコン シリコンフリー ハリコシトリートメント アミノ酸トリートメント 弱酸性トレンツ P11Sep16, 【最大600円クーポン 】【送料無料】フィエーリ 業務サイズ2500 詰替2点セット フィエーリシャンプー 2.5Lパック & フィエーリトリートメント 2.5KGパック ミルボン くせ毛対応ヘアケア FIERLI《詰め替え 業務用 トリートメント シャンプー 美容室専売》, 【正規品・送料無料】ルナソル リップシャドウライナーN<レフィル>+コフレ3800円;アコードワゴン マフラー E,GF-CF6 POWER Getter パワーゲッター フジツボ FUJITSUBO 160-54312 ■TRUST トラスト 車高調 NCEC Roadster FR PMD ロードスター(ハードトップ) ダンパー サスペンション↓↓↓【送料無料】 245/35R20 20インチ WORK ワーク シュヴァート SC4 8J 8.00-20 DUNLOP ダンロップ ルマン V(ファイブ) サマータイヤ ホイール4本セット【DUsum18】, DIXCEL ミラジーノ L700S TURBO ABS無 リヤブレーキシュー 01/09~02/08 RGM Type, ブリッド スーパーシートレールFGタイプ右側SCP10ヴィッツ 99/1~, brembo ブレンボ ブレーキパッド フロント セラミック ホンダ シビック FD1 05/09~仕様変更 P28 034N ブレーキ パッド 交換 部品 メンテナンス パーツ ポイント消化, WirusWin ウイルズウィン バックレスト・グラブバー リアボックス用ベースブラケット付きタンデムバー ブライアントタイプ Z1 125


↓↓↓↓↓↓↓↓↓↓↓↓

【送料無料】 215/40R18 18インチ ENKEI エンケイ PF01 7J 7.00-18 ROADCLAW ロードクロウ RH660(限定) サマータイヤ ホイール4本セット, 【送料無料】 165/60R15 15インチ RAYS レイズ デイトナ MRX.H 5J 5.00-15 BRIDGESTONE ブリヂストン エコピア NH100 C サマータイヤ ホイール4本セット, 15インチ サマータイヤ セット【適応車種:イグニス(FF21S)】HOT STUFF エクシーダー E03 ダークシルバー 5.5Jx15Bluearth AE01F 175/65R15, ★色番号塗装発送200 ハイエース ワイド フロントバンパー【ブレス】ハイエース 200系 3型ワイド エルモードフロントバンパー フォグランプ/デイライト/ベースセット, 送料無料■RAYS レイズ マルカ ホイールズ ブロッケン DS510 リミテッド■ハイパーブラック/ミラーカット/ブラッククリア■20inch 8.5J■5穴114mm■選べるタイヤ■235/30R20

ATS L.S.D 1.5way Metal Spec1 レガシィアウトバック BRF(03.5-09.4);NA Jack タント カスタム LA600S ALLURE テールライトカバー 2P カラー:ライトスモーク ニッサン ステージア 96.10~98.8 AWC34(260RS) ACRE(アクレ) ブレーキパッド ダストレスリアル 330 リア 左右セット ブレーキ アクレ パッド エルグランド用 フイニツシヤーリアサイドリアLHエルグランド 76905-1A504 日産純正部品;MANARAY SPORT/EuroSpeed BL10 アルミホイール 4本セット ムーヴ/ムーヴカスタム L175/L185 【13×4.0B 4-100 INSET42 ブラポリ】

車種別専用フロアマット CALMAT(キャルマット) トヨタ マークX フィアット 500 20年3~ 右ハンドル車-シャギーアイボリー;レオニス LEONIS NAVIA 05 ホイール 1本 17 インチ 4H100 6.5J+42 ウェッズ スポーツ WEDS

、ItemID と同じ値の場合に連続して欲しいカラム(今回は Price と HandlingFee)でパティションわけして、 SalesDate 順で ROW_NUMBER を生成しておきます(RowNo2)。

そして 【シェルタイプロックナットSet】20個入り■ビスタ/トヨタ■M12×P1.5/クローズドエンドタイプ53mm■1個51g【レデューラレーシング】 ロック&ナットセット【CL53-11】、RowNo1 と RowNo2 の差分でグルーピングすると、値が揃っている時に同じグループになります。

ItemID と、この両方の差分でグルーピングすることによって DIXCEL (ディクセル) リア ブレーキローター PD 3657010 レガシィセダン(B4) BE5 98/12~03/06 B4・RSK LimitedII・Sport Shift車 (D型) (DAVローター装着不可)、連続の日付で指定したカラムのデータが同じ期間が、同じグループになるようにしています。


ハブ一体型アジャストスペーサー モンツァ エリシオン DBA-RR3 10mm厚 スタンダードシートカバー

わかりやすいように、

ハブ一体型アジャストスペーサー エリシオン DBA-RR3 10mm厚

、グルーピングされていないデータも載せておきます。

SELECT ItemID,
 SalesDate,
 Price,
 HandlingFee,
 RowNo1,
 DATEDIFF(dd, RowNo1, SalesDate) AS Diff1,
 RowNo2,
 RowNo1 - RowNo2 AS Diff2
FROM
 (SELECT ItemID,
 SalesDate,
 Price,
 HandlingFee,
 ROW_NUMBER() OVER (PARTITION BY ItemID 
 ORDER BY SalesDate) AS RowNo1,
 ROW_NUMBER() OVER (PARTITION BY ItemID, 
 Price, 
 HandlingFee 
 ORDER BY SalesDate) AS RowNo2
 FROM ItemPrice) AS T
ORDER BY ItemID,
 SalesDate;

[ 実行結果 ]

ホーム > 便利なT-SQL&クエリー集 > T-SQL で連続する日ごとのデータを日付範囲のデータにまとめる
{yahoojp}jpprem01-zenjp40-wl-zd-5329