SQL Server 2008-行数过度筛选结果
我有下面的SQL,它工作并返回具有重复名称的产品,rownum列是该名称出现次数的计数 在末尾添加SQL Server 2008-行数过度筛选结果,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,我有下面的SQL,它工作并返回具有重复名称的产品,rownum列是该名称出现次数的计数 在末尾添加其中rownum>1只会得到重复项 SELECT * FROM (SELECT id, productname, ROW_NUMBER() OVER (PARTITION BY productname ORDER BY productname) Rownum FROM products
其中rownum>1
只会得到重复项
SELECT *
FROM
(SELECT
id, productname,
ROW_NUMBER() OVER (PARTITION BY productname
ORDER BY productname) Rownum
FROM products
GROUP BY id, productname) result
要求
我需要生成一个产品列表,如果rownum列的值大于1,我希望看到与该产品相关的所有行都按name列分组
如果某个产品的rownum值仅为1,并且没有大于1的值(因此没有重复),我不希望看到该行
例如,如果“蓝色雨伞”出现三次,我希望看到该产品的结果如下:
ID Name Rownum
35 Blue umbrella 1
41 Blue umbrella 2
90 Blue umbrella 3
请告诉我如何实现这一点?将
行数改为Count(1)Over
,并选择计数大于1的位置,然后按删除组
SELECT * from (Select id,productname,
Count(1) OVER(Partition By productname ORDER by productname) Rownum
FROM products
) result
WHERE Rownum > 1
实际上,你的预期产出是多少?只需要显示带有rownum=1
的行?您好,否如果任何行的rownum列中的数字大于1,例如3,我还想查看其他两个相关行。所以基本上我希望看到所有的复制品彼此相邻。我希望这能澄清它的可读性,可能会将计算的rownum列从rownum重命名为更接近它实际包含的内容:)我尝试了这一点,但得到了错误“并行数据仓库(PDW)功能未启用”。:(但感谢您的回复