Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 Server 2008-行数过度筛选结果_Sql_Sql Server_Tsql_Ssms - Fatal编程技术网

SQL Server 2008-行数过度筛选结果

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

我有下面的SQL,它工作并返回具有重复名称的产品,rownum列是该名称出现次数的计数

在末尾添加
其中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)功能未启用”。:(但感谢您的回复