我正在尝试在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)并计算购买量
答案 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
你得到了你提到的错误,因为当你正在查询查询结果时 - 那么每个选定的值应该是你正在填充的列,或者是某些聚合函数的结果 - 这正是在错误文本中说明。