2015-10-07 167 views
1

我想在我的數據庫中查詢mvc,我想通過訂購日期來計算購買ID和組。這是我的購買模式:按MVC查詢日期的SQL組

public class Purchase 
{ 
    public int PurchaseID { get; set; } 
    public int CustomerID { get; set; } 

    public bool DeliveryChoice { get; set; } 
    public int? DriverID { get; set; } 

    [DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
    [Display(Name = "Order Date")] 
} 

,這是我的查詢:

SELECT 
    Purchase.PurchaseID, 
    Purchase.OrderDate, 
    COUNT(*) 
From Purchase 
GROUP BY Purchase.OrderDate; 

這是我得到的消息,當我執行:

消息8120,級別16,狀態1,Line 1
列'Purchase.PurchaseID'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。

我將如何解決這個問題,讓我按日期(YYYY-MM-DD),如果你需要計算purchaseID按日期細分電子郵件算上purchaseid

+3

從查詢中移除'Purchase.PurchaseID'? – Ric

+1

錯誤告訴你'Purchase.PurchaseID'不在'group by'子句中。 – markpsmith

+0

它的sql比mvc多,所以運行查詢:-) – brykneval

回答

4

,那麼你需要查詢像這樣的:

select 
    convert(nvarchar(10), Purchase.OrderDate, 112) as OrderDate, 
    count(Purchase.PurchaseID) 
from Purchase 
group by convert(nvarchar(10), Purchase.OrderDate, 112) 

只是移動Purchase.PurchaseID到聚合函數count

你得到錯誤的說法你所提到的,因爲當你groupping QUER的結果y - 那麼每個選定的值應該是您正在分組的一列或某個聚合函數的結果 - 這正是錯誤文本中所述的內容。

+0

我將如何得到日期以yyyy-MM-dd格式顯示而不是'2015-09-30 13:27:24.000'? –

+0

@NneneTheresaUzoegbo如果你只需要根據日期部分進行分組(在第一次看時在你的問題中錯過了這一點),那麼你應該通過這個值去掉時間部分和分組。比如,它應該是'convert by convert(nvarchar(10),Purchase.OrderDate,112)'。以這種格式顯示日期應該由您已經使用過的'DisplayFormat'屬性完成。 –