Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对产品进行分组,然后在TSQL中按日期描述对其进行排序?_Sql_Qtsql - Fatal编程技术网

如何对产品进行分组,然后在TSQL中按日期描述对其进行排序?

如何对产品进行分组,然后在TSQL中按日期描述对其进行排序?,sql,qtsql,Sql,Qtsql,下面是SQL,但它给了我一个错误: select u.productId, count(ProductID) as total, p.Name from dbo.UserXProduct AS u INNER JOIN dbo.product AS p ON u.ProductID = p.ID group by productid, p.name having count(ProductID) > 5 order by u.dateEntered desc, total d

下面是SQL,但它给了我一个错误:

select u.productId, count(ProductID) as total, p.Name 
from dbo.UserXProduct AS u 
INNER JOIN dbo.product AS p ON u.ProductID = p.ID   
group by productid, p.name 
having count(ProductID) > 5 
order by u.dateEntered desc, total desc
编辑:以下是我得到的错误:

列“dbo.UserXProduct.DateEntered”在ORDER BY中无效 子句,因为它不包含在聚合函数或 GROUPBY子句


您不能在“分组依据”中引用列别名。请尝试以下方法:

select u.productId, count(ProductID) as total, p.Name 
from dbo.UserXProduct AS u 
INNER JOIN dbo.product AS p ON u.ProductID = p.ID   
group by productid, p.name 
having count(ProductID) > 5 
order by count(ProductID) desc

您不能按订购u.dateEntered列,除非该列出现在
group BY

中。您不能直接按u.dateEntered订购。但是,您可以按
max(u.dateEntered)
订购。这可能是您对最新产品的期望:

select u.productId, count(ProductID) as total, p.Name 
from dbo.UserXProduct AS u 
INNER JOIN dbo.product AS p ON u.ProductID = p.ID   
group by productid, p.name 
having count(ProductID) > 5 
order by max(u.dateEntered) desc, total desc

谢谢你的回复。实际上,我对DateEntered列有问题。这里是错误:列“dbo.UserXProduct.DateEntered”在ORDER BY子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。问题是,如果我在之前将DateEntered添加到GROUP中,那么结果就不是我所期望的。我要的是最新的畅销货订单。