Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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
如何使用名称选择SQL中最常见的项_Sql_Sql Server_Tsql_Aggregate Functions - Fatal编程技术网

如何使用名称选择SQL中最常见的项

如何使用名称选择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,

我正在尝试选择出现次数最多的项目。这段代码可以工作,但我不知道如何从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

我不确定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