2011-06-15 91 views
1

我想根據月份篩選記錄。要求是在月份有多少項目處於「已完成,未決,已開始等」狀態。這是我的查詢,但我得到重複的記錄。分組獲取重複記錄

 
SELECT distinct 
     convert(varchar(7), w.ExpectedStartDate, 126) AS StatusOfMonth, 
     COUNT(w.StatusTypeId) AS StatusCount, 
     w.StatusTypeId, 
     st.StatusTypeName 

     FROM Table1 w 
     LEFT OUTER JOIN StatusType st ON st.StatusTypeId = w.StatusTypeId 
     WHERE CONVERT(VARCHAR(20), w.ExpectedStartDate, 103) BETWEEN '10/01/2011' AND '14/04/2011' 
GROUP BY ExpectedStartDate, w.StatusTypeId, st.StatusTypeName 

Please see image to clarify what i want

請參閱圖像澄清我想要什麼。請讓我知道我如何得到正確的結果。

回答

4

看起來你的分組的日期,而不是按月或按月份 集團通過

DATEPART(M, ExpectedStartDate) 

convert(varchar(7), w.ExpectedStartDate, 126) 

,而不是僅僅ExpectedStartDate

編輯狀態

對此評論: 嘗試擺脫

convert(varchar(7), w.ExpectedStartDate, 126) AS StatusOfMonth 

也試着這樣說:

SELECT 
    convert(varchar, datepart(yyyy, w.ExpectedStartDate)) + '-' + CONVERT(varchar(3), DATENAME(month, w.ExpectedStartDate)), 
    w.StatusTypeId, 
    st.StatusTypeName, 
    COUNT(w.StatusTypeId) AS StatusCount 
FROM 
    Table1 w LEFT OUTER JOIN 
    StatusType st ON st.StatusTypeId = w.StatusTypeId 
WHERE 
    w.ExpectedStartDate BETWEEN '1/10/2011' AND '04/14/2011' 
GROUP BY 
    datepart(M, w.ExpectedStartDate), 
    datepart(yyyy, w.ExpectedStartDate), 
    w.StatusTypeId, 
    st.StatusTypeName 
+0

我與
DATEPART(月,ExpectedStartDate)AS StatusOfMonth檢查,但它正顯示出相同的結果。給我其他提示。 – Sami 2011-06-15 12:43:42

+0

查看編輯 - 我能做的最好,在這裏工作得很好。 – 2011-06-15 12:52:11

+0

嗨@傑夫,非常感謝,這對我來說也很好。大。我可以在格式2011年12月(yyyy-MMM)獲取日期嗎? – Sami 2011-06-15 12:56:24