2016-05-10 7 views
1

過去30日間にサインインしたすべてのユーザーを検索し、最初の7日間のアクティビティを確認します。 Dateは、サインオンした後にアクティビティをマップします。 Dayは、ユーザーがサインオンしてからの経過日数です。関数内のSQL関数とクエリの式

私はこのようなものが欲しいです。

SELECT UserID, Date 
FROM Web 
WHERE (Day < = 30) and (CONVERT(date, Date) - CONVERT(date,CURDATE()) - Day) <= 7) 
ORDER BY UserID asc, Date desc; 

私のSQLスキルは基本的なものなので、できるだけシンプルにする必要があります。

EDITED:これはトリックを行う必要があります

SELECT UserID, DT 
FROM test 
WHERE (Day < = 30) and DATEDIFF(DAY, DATEADD(DAY, -Day, GETDATE()), Date) <= 7 
ORDER BY UserID asc, DT desc; 
+1

タグ、そこにいくつかの製品固有のSQLを.. – jarlh

+0

@jarlhこの場合MS SQL SERVER – NANA

+0

サンプルデータと必要な結果を提供してください。あなたの質問とあなたの記述との関係はわかりません。 –

答えて

1

私は多分このような何かを考えているDBMSが使用

SELECT UserID, Date 
FROM Web 
WHERE (Day < = 30) and DATEDIFF(DAY, DATEADD(DAY, -[Day], GETDATE()), [Date]) <= 7 
ORDER BY UserID asc, Date desc; 
+0

ああDATEDIFF!いい考え。作るのおかげでシンプルです! – NANA

+0

これは私に最後の7日間の日付を与え、私が必要とするのは、ユーザーがサインオンしてから7日後の日付です。 「日」だけで表される「日」は、サインオンしてから何日が経過したかを数えます。 – NANA

+0

DATEDIFFの中で 'DATEADD(DAY、-Day、GETDATE())'を使うかもしれませんか? – NANA