-1

重複した質問に目を通しましたが、解決策がうまくいきません。

私は2つの列を持っています:

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 を取得する必要があります。申し訳ありませんが、最初に例を提供しませんでした。

4

2 に答える 2

0

それは複雑に思えます。次のようなことを試してください:

SELECT DISTINCT ProductId from DataSetsMaterializedDataSqlvariant 
WHERE DataSetsMaterializedInternalRowsetID = 5 

または、両方の列が必要な場合は、複数ある場合に選択する InstanceId を指定する必要があります。

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

これが探しているものでない場合は、サンプル データと目的の出力を投稿してください。

于 2012-06-04T15:56:28.220 に答える
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 
于 2012-06-04T15:56:39.397 に答える