一栏不同

时间:2012-06-04 15:51:52

标签: sql-server tsql distinct

我查看了重复的问题,但那里的解决方案对我不起作用。

我有两列:

InstanceID 
ProductID

并希望仅获取唯一的ProductID。

在这里提出的其他问题我试试这个解决方案:

SELECT *
FROM  
   (SELECT CAST(A.Col001 AS int) AS SurveyInstanceID , 
           CAST(A.Col002 AS nvarchar(25)) AS ProductID , 
           ROW_NUMBER() OVER(PARTITION BY A.Col002 ORDER BY A.Col001  DESC) rn
    FROM DataSetsMaterializedDataSqlvariant A 
    WHERE DataSetsMaterializedInternalRowsetID = 5 
   ) a
WHERE rn = 1

但我得到了重复的值。

编辑:

有关详细信息,请参阅我的表格:

InstanceID  ProductID


1           10

1           11

1           12

1           13

2           10

2           A1

3           10

3           11  

3           B1  

3           C1  

3           D1

3           E1
......

我需要获取唯一的产品ID。对不起,我没有在乞讨时提供例子。

2 个答案:

答案 0 :(得分:0)

这似乎很复杂。尝试这样的事情:

SELECT DISTINCT ProductId from DataSetsMaterializedDataSqlvariant 
WHERE DataSetsMaterializedInternalRowsetID = 5 

或者如果您想要两个列,则需要指定在有多个InstanceId的情况下选择哪个InstanceId:

SELECT ProductId, MAX(InstanceId)
FROM DataSetsMaterializedDataSqlvariant 
WHERE DataSetsMaterializedInternalRowsetID = 5 
Group BY ProductId

如果这不是您要找的,请发布您的样本数据和所需的输出。

答案 1 :(得分:0)

如果您想删除重复项,可以使用distint

SELECT DISTINCT CAST(A.Col001 AS int) AS SurveyInstanceID , 
       CAST(A.Col002 AS nvarchar(25)) AS ProductID , 
       ROW_NUMBER() OVER(PARTITION BY A.Col002 ORDER BY A.Col001  DESC) rn
FROM DataSetsMaterializedDataSqlvariant A 
WHERE DataSetsMaterializedInternalRowsetID = 5