[英]SELECT COUNT(*) - return 0 along with grouped fields if there are no matching rows
[英]Select rows where count of grouped data =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
並且我需要先按用戶和星期將結果分組,然后我需要計算用戶之前(假設第20周)和之后出現了幾周,然后僅選擇在前后至少兩周出現的用戶,所以就我而言,我會得到結果
user2
不幸的是,由於數據庫限制,我無法創建viewTable。 這個查詢只給我結果的第一部分,按用戶和星期分組的數據,但是我不知道如何計算分組數據:
SELECT username,
min(a.actionDate) as date,
datepart(wk,a.actionDate) as week
FROM Table1 a
GROUP BY username ,
datepart(wk,amd.actionDate)
謝謝你的幫助。
要返回具有日期記錄至少在指定日期之前兩周和之后兩周的用戶,請嘗試:
select username
from Table1
group by username
having datediff(wk, min(actiondate), @date) >= 2 and
datediff(wk, @date, max(actiondate)) >= 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.