如何使用名称选择SQL中最常见的项
我正在尝试选择出现次数最多的项目。这段代码可以工作,但我不知道如何从Item表中获取相应的ItemName而不出错如何使用名称选择SQL中最常见的项,sql,sql-server,tsql,aggregate-functions,Sql,Sql Server,Tsql,Aggregate Functions,我正在尝试选择出现次数最多的项目。这段代码可以工作,但我不知道如何从Item表中获取相应的ItemName而不出错 SELECT TransactionDetail.ItemID, COUNT(*) AS 'AmountSold' FROM TransactionDetail GROUP BY TransactionDetail.ItemID ORDER BY COUNT(*) DESC 尝试的代码: SELECT TransactionDetail.ItemID,
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
我不确定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
--您可以在这里的末尾输入order by,以按降序列出结果。如果你有成千上万的物品,这不是最好的方法 你能分享两张桌子的DDL吗?
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