0

これが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" は、集計関数にも GROUP BY 句にも含まれていないため、ORDER BY 句では無効です

4

2 に答える 2

1

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
于 2013-08-11T13:47:41.420 に答える
0

で列のエイリアスを参照することはできませんgroup by。代わりにこれを試してください:

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

ORDER BYに存在しない限り、u.dateEntered 列は使用できませんgroup by

于 2013-08-11T03:34:41.023 に答える