• 締切済み

MSDNselectしながらWHileでまわすには

お詳しい方、どうかたすけてください。 環境はMicrosoftSQLです。 やりたいことは、 あるテーブルからデータを取ってくる際に、最後の購入日を今の日付から1週間さかのぼりしながら、 何週間さかのぼったかを、useridと一緒に結果で返したいのです。 select userid , CASE WHEN MAX(購入日) > getdate()-7 THEN 1 WHEN MAX(購入日) > getdate()-14 THEN 2 as 'week' みたいなことなのですが、 これをWHILEを使って、永遠にさかのぼれるようにしたいのです。 例としては、 DECLARE @ss int; DECLARE @Recency int; set @ss = '7' set @Recency = '0' while (getdate()- @ss > '2012-10-01') begin set @ss = @ss- 7 set @Recency = @Recency + 1 SELECT user_id, case when max(購入日)> getdate()-@ss then @Recency as 'week' end from usrbuyingtable こんなかんじかとおもったのですが、 ぜんぜんうまくいきません・・ 文法チェックをお願いします。

みんなの回答

回答No.1

SELECT USERID,DATEDIFF(DAY,購入日,GETDATE())/7+1 FROM テーブル名 でどうでしょうか。

関連するQ&A