我试图选择最常出现的项目。此代码有效,但我不知道如何从Item表中获取它的相应ItemName而不会出错
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 :(得分: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
答案 1 :(得分:0)
我不确定您在Item表中有多少项,但是您可以通过在初始select语句后滚动查询来对计数进行分组。
例如。
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
- 您可以在此处输入订单,以降序列出结果。如果你有成千上万的物品,这不是最好的方法。