2012-03-02 5 views
0

ユーザーを取得する必要があります。ユーザーは、指定した日付の前後2週間前に表示されます。だから私は、データ持って言うことができます:、その後、私は、後に(週20言うことができます)と、前にユーザーが表示されますどのように多くの週カウントする必要がグループ化されたデータの数が2の行を選択します。

userName date week 
user1 27 10 2011 44 
user1 27 10 2011 44 
user1 27 10 2011 44 
user2 21 04 2011 17 
user2 29 04 2011 17 
user2 02 05 2011 19 
user2 03 05 2011 19 
user2 16 05 2011 21 
user2 23 05 2011 22 
user3 06 01 2011 24 
user3 14 05 2011 25 
user3 20 05 2011 26 
user3 27 05 2011 27 

を、私は最初のユーザーと週ごとにグループ化された結果を取得する必要がありますし、私の場合、私は残念ながら、私が原因でデータベースの制限のviewTableを作成することはできません結果

user2 

になるだろうので、その後、少なくとも2週間前と後に表示されるものだけを選択します。このクエリは、私のユーザーと週ごとにグループ化された結果、データの最初の部分のみを与えているが、私はグループ化されたデータカウントする方法は考えていません:任意の助け

SELECT username, 
     min(a.actionDate) as date, 
     datepart(wk,a.actionDate) as week 
FROM  Table1 a   
GROUP BY username , 
     datepart(wk,amd.actionDate) 

感謝を。

+0

RDBMSは何してくださいますか?オラクル? SQLサーバー? PostgreSQL? MySQL? SQLite?その他? – Benoit

答えて

0

しようと、前に少なくとも2週間の日付レコードを持っているし、2週間後に指定した日付のユーザーを返すために:

select username 
from Table1 
group by username 
having datediff(wk, min(actiondate), @date) >= 2 and 
     datediff(wk, @date, max(actiondate)) >= 2 
+0

私はあなたのコードを試しましたが、それはかなりシンプルに見えますが、望みの結果が得られません。一方の側で 'datediff(wk、min(actiondate)、@date)> = 2'が働いていて、少なくとも2週間はレコードを保持しているユーザーをフィルタリングしますが、 、max(actiondate))> = 2 'もう一度私にすべてのユーザーを与えて、なぜ理解できないのですか? – Mallvina

+0

@dateにどのような価値を割り当てましたか? –

+0

私は日付を割り当てます。例は'10 05 2011 '、週20の日付です。問題は1つのステートメントと別のステートメントがあることです。なぜなら、私が1つずつ実行すると、どちらも正しい結果が得られますが、どのように参加するのでしょうか? – Mallvina

関連する問題