2015-02-05 64 views
2

我正在尝试选择最常出现的项目。此代码的工作,但我不知道如何得到它的各个ITEMNAME从项目表中没有它的示数如何使用名称选择SQL中发生次数最多的项目

SELECT 
    TransactionDetail.ItemID, COUNT(*) AS 'AmountSold' 
FROM TransactionDetail 
GROUP BY TransactionDetail.ItemID 
ORDER BY COUNT(*) DESC 

尝试代码:

SELECT 
     TransactionDetail.ItemID, 
     COUNT(*) AS 'AmountSold' 
FROM TransactionDetail 
JOIN Item 
ON Item.ItemID = TransactionDetail.ItemID 
WHERE Item.ItemID = TransactionDetail.ItemID 
GROUP BY TransactionDetail.ItemID 
ORDER BY COUNT (*) DESC 
+0

你能分享这两个表的DDL吗? – Mureinik 2015-02-05 15:47:18

回答

3
SELECT TransactionDetail.ItemID9 
     ,Item.ItemName 
     , COUNT(*) AS [AmountSold] 
FROM TransactionDetail 
INNER JOIN Item ON Item.ItemID = TransactionDetail.ItemID 
GROUP BY TransactionDetail.ItemID , Item.ItemName 
ORDER BY AmountSold DESC 
0

林不知道有多少项目,你在Item表中有,但是您可以通过在您有初始选择语句后滚动查询来对计数进行分组。

例如。

Select 
Case When rollup.ItemName like 'itemName1' Then count(rollup.ItemID) end as 'itemName1', 
Case When rollup.ItemName like 'itemName2' Then count(rollup.ItemID) end as 'itemName2', 
Case When rollup.ItemName like 'itemName3' Then count(rollup.ItemID) end as 'itemName3', 

from 
(
Select Item.ItemName, 
TransactionDetail.ItemID 

FROM TransactionDetail 
JOIN Item 
ON Item.ItemID = TransactionDetail.ItemID 
WHERE Item.ItemID = TransactionDetail.ItemID 

)as rollup 

- 您可以在此处按顺序输入命令以按降序列出结果。如果你有成千上万的物品,这不会是最好的方法。

相关问题