在MVC查询中按日期SQL组

时间:2015-10-07 13:37:20

标签: sql sql-server

我正在尝试在mvc上的数据库中进行查询,我想按订单日期计算购买ID和分组。这是我的购买模式:

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;

这是我执行时得到的消息:

  

Msg 8120,Level 16,State 1,Line 1
  列''Purchase.PurchaseID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

如何修复它以允许我按日期分组(yyyy-MM-dd)并计算购买量

1 个答案:

答案 0 :(得分:4)

如果您需要计算按日期分组的purchaseID,那么您需要查询如下:

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

的参数

你得到了你提到的错误,因为当你正在查询查询结果时 - 那么每个选定的值应该是你正在填充的列,或者是某些聚合函数的结果 - 这正是在错误文本中说明。

相关问题