如何选择SQL中具有特定列计数的表中的所有列?
假设我有以下专栏:如何选择SQL中具有特定列计数的表中的所有列?,sql,sql-server,Sql,Sql Server,假设我有以下专栏: 表格编号 产品标识 日期 注意:每个表单ID可以有一个以上的产品ID,我想按产品ID出现的次数对所有数据进行排序 SELECT * , COUNT(Product_ID) AS indicator from my_database.inv_table GROUP BY (Product_ID) ORDER BY indicator DESC 有什么想法和帮助吗?谢谢。使用相关子查询进行计数: SELECT t1.*, (select COUNT(*) from my_dat
SELECT * , COUNT(Product_ID) AS indicator
from my_database.inv_table
GROUP BY (Product_ID)
ORDER BY indicator DESC
有什么想法和帮助吗?谢谢。使用相关子查询进行计数:
SELECT t1.*, (select COUNT(*) from my_database.inv_table t2
where t1.Form_ID = t2.Form_ID) AS indicator
from my_database.inv_table t1
ORDER BY indicator DESC
您可以在(按产品ID划分)上使用Count(*)
:
不需要选择指示符
-列,如果不需要,也可以在按顺序
中使用计数(*)Over(按产品ID划分)
MSDN:请显示输入和预期输出的示例。这将使问题更容易回答understand@ASh对不起,描述得不够清楚。你可以说像'F09123'、'F21378'、'F25632'之类的表单ID,对于产品ID,让我们说'P0001'、'P0002'、'P0003'等等。我想要得到的是所有数据(表单ID、产品ID、日期),按产品ID的出现次数排序。这对你有帮助吗?这会有用,但是请查看Tim Schmelter回答中的
over
子句:)请在这里解释逻辑,以便我能理解。:)@但是,我认为应该是t1.Product\u ID=t2.Product\u ID,不是吗?因为我是基于Product_ID.cmiiwad一些样本数据和问题的预期结果计算的,我可以调整我的答案。如果有10列呢?我必须描述所有的专栏吗?或者,我可以像往常一样用*替换列吗?@Ray:当然可以使用*
但是;)
SELECT Form_ID, Product_ID, Date,
Indicator = Count(*) Over (Partition by Product_ID)
FROM my_database.inv_table
ORDER BY Indicator DESC