2015-04-17 61 views
0

我試圖通過組從日期時間根據牛逼SQL組由一個月

我運行下面的查詢

select cf.flow_name as 'Process', COUNT(c.case_ID) as 'Case', CONVERT(VARCHAR(10),c.xdate,104) as 'Date' 
from cases c inner join case_flow cf on c.case_flow_ID=cf.CF_ID 
where project_ID=1 and c.subject_ID=1 
group by cf.flow_name,c.xdate 

列中的數據類型,如下

flow_name varchar(100) 

case_ID int 

xdate datetime 

結果顯示如下,如果我運行以上查詢

過程 - 案例 - 日期

Test  1 30.01.2015 
Test  1 30.01.2015 
analysis 1 19.03.2015 
analysis 1 30.03.2015 
analysis 1 13.04.2015 
analysis 1 16.04.2015 

問:

我需要按如下(按按每月x.date)

正確結果應該如下

過程 - 案例 - 日期

Test  2 30.01.2015 (Because Test has 2 data from 01 month) 
analysis 2 19.03.2015 (Because analysis has 2 data from 03 month) 
analysis 2 13.04.2015 (Because analysis has 2 data from 04 month) 

所有結果應當經我怎麼能做到這一點,根據我的查詢組?

希望你明白我的英語感謝

+2

您按月分組但選擇任意日期。約會的要求是什麼? – Lamak

+0

我懷疑你可能真的想按月和年來分組,而不是僅僅一個月,對嗎? – Jamiec

+0

[按月和年分組]的可能重複(http://stackoverflow.com/questions/5406170/sql-grouping-by-month-and-year) – Jamiec

回答

1
SELECT cf_flow, 
     Count(*), 
     Min(xdate) 
FROM cases c 
     INNER JOIN case_flow cf 
       ON c.case_flow_id = cf.cf_id 
WHERE project_id = 1 
     AND c.subject_id = 1 
GROUP BY cf_flow, 
      Dateadd(month, Datediff(month, 0, xdate), 0) 
+0

感謝它的工作! –