>  > clazzio シートカバー クラッツィオ プライムタイプ ホンダ フリード 型式 GB3/GB4 年式 H23/11-H28/8 定員 6人 ≪ 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 ※2列目肘掛2本仕様車別設定有

clazzio シートカバー クラッツィオ プライムタイプ ホンダ フリード 型式 GB3/GB4 年式 H23/11-H28/8 定員 6人 ≪ 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 ※2列目肘掛2本仕様車別設定有

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

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

    

H23/11-H28/8 ≪ 定員 ≪ フリード クラッツィオ 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 プライムタイプ シートカバー ホンダ 6人 ※2列目肘掛2本仕様車別設定有 年式 型式 clazzio GB3/GB4 定員

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

例えば プロジェクトμ ベストップ フロント左右セット ブレーキパッド ブルーバード QU14 F232 プロジェクトミュー プロミュー プロμ BESTOP ブレーキパット【店頭受取対応商品】、日ごとに値段が変動するような商品があって、商品(ItemID)の販売日(SalesDate)ごとの値段(Price)と手数料(HandlingFee)を持つ 【★送料無料】 【GG アテンザ オートエクゼ】マツダスピ-ド アテンザ (GG3P) ストリートブレーキローター 前後セット、次のような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 でパティションわけして 【18 クラウン シルクブレイズ】クラウン18系 アスリート後期 プレミアムライン サイドステップ 純正色塗装済(パールメタリック)、 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 に加えて ブリヂストン NEXTRY ネクストリー サマータイヤ 215/50R17 BLEST EUROMAGIC Lance STP 17 X 7 +50 5穴 100、

clazzio シートカバー クラッツィオ プライムタイプ ホンダ フリード 型式 GB3/GB4 年式 H23/11-H28/8 定員 6人 ≪ 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 ※2列目肘掛2本仕様車別設定有





■ 装着サンプル ■
※ステッチ縫製デザインは車種毎に異なります

≪ ブラック ≫
※ ヴェルファイア 30系 に装着した参考例です ※





■ 縦ダブルステッチライン センター部分 ■



■ 使用生地 サイドバック部分 ■



■ シートライン縫製 ■



■ クッション材 ■



● 適合に表記がない限り、純正で本革シートもしくは合皮シートのお車、福祉車両には取付は出来ません。

● メーカーもしくはディーラーオプションのパーツ(サイドエアバッグ含む)には対応しておりません。

● コンビニフック部は使用するにあたり加工が必要です。(※但し車種により使用出来ない場合もございます)

● カバーを取り付けする事により純正機能を損なう場合があります。

● 予告なく仕様・価格の変更・販売を中止する場合がございます。

● 商品には折り皺、梱包時の型が付いている物が御座いますが、ご使用頂く中で解消されるものとなります。

商品説明 ・イレブン クラッツィオ シートカバー
・品番 EH0436
・車種 ホンダ フリード
・型式
 GB3
 GB4
・適合グレード
 G ジャストセレクション
 G ジャストセレクション Lパッケージ
 G エアロ
 G エアロ Lパッケージ
 GH
 G エアロ グランパッケージ
 G エアロ クールエディション
 G ジャストセレクション+
 G プレミアムエディション
・年式 H23/11-H28/8
・定員 6人
・2列目キャプテンシート車用
・2列目アームレスト計4本仕様車用
・3列目アームレスト計2本仕様車用
※1列目オプション・アームレストコンソール装備車不可
・カバーカラー メニューから選択
・シートパターン
※合わせて画像の3枚目もご確認下さい
ヘッドレスト数 6
1列目肘掛 2
2列目肘掛 4
3列目肘掛 2
※画像はイメージです
※適合詳細について、少しでも相違ある場合、装着使用はできません

・取付は、個人様では取付困難な内容もある場合ありますので、最寄のショップ様や整備工場様などでのお取付をお薦め致します。
送料 ※離島のお客様は送料分「着払い」とさせて頂きます。
納期 【発送までの目安】
●メーカーさんからの直送品です。
●メーカーさんに在庫が有る場合:注文確定(銀行振込は入金確認後)から3~5営業日で発送となります。
●メーカーさんに在庫が無い場合:
発送までに1ヶ月以上お時間を要する場合がございます。改めて発送日のご連絡をさせていただきます。
※お時間お急ぎなお客様は、御購入お手続き前に納期のお問合せをなさって下さい。

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

そして ディクセル PD type ブレーキディスク リア ボルボ 850 WAGON 2.5 AWD 8B5254AW 1996年~1997年、RowNo1 と RowNo2 の差分でグルーピングすると、値が揃っている時に同じグループになります。

ItemID と、この両方の差分でグルーピングすることによって 【割引クーポン配布中】Clazzio/クラッツィオ CLAZZIO Giacca(ジャッカ) N-BOX カスタム/JF1、JF2 H27/2~ シートバックテーブル装備車 カラータンベージュ【14EHA2040T】、連続の日付で指定したカラムのデータが同じ期間が、同じグループになるようにしています。


clazzio シートカバー クラッツィオ プライムタイプ ホンダ フリード 型式 GB3/GB4 年式 H23/11-H28/8 定員 H16/4~ 6人 ≪ T105TDF 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 ※2列目肘掛2本仕様車別設定有

わかりやすいように、

clazzio シートカバー クラッツィオ プライムタイプ ホンダ フリード 型式 GB3/GB4 年式 H23/11-H28/8 定員 6人 ≪ 2列目キャプテンシート/2列目肘掛左右2本づつ計4本仕様 ≫※1列目オプションアームレストコンソール付車不可 ※2列目肘掛2本仕様車別設定有

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

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