我查看了重复的问题,但那里的解决方案对我不起作用。
我有两列:
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。对不起,我没有在乞讨时提供例子。
答案 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