2016-11-10 11 views
0

レコードに複数の参照が含まれている場合、最も低いインデックス番号/ Indnoを取得する方法を知りたい(同じメタデータを含む契約があるとしますが、インデックス番号のみです)同じ表のいくつかのレコードについては、複数の結果を返す

Indnoの選択でいくつかの/ Minの選択肢または2の組み合わせを使用しましたが、失敗しました。

これは最低Indnoレコードを取得しますが、代わりに、それらすべてのわずか1記録:

Select MIN(Indno) as LowestIndexes 
from TableName 
where indno matches some criteria in other columns 

例:結果のこのセットについて

IndNo Col 1  Col 2  Col 3 

1  Peanut Butter Jelly 
2  Peanut Butter Jelly 
3  Peanut Butter Jelly 
4  Milk  Oreo  InfiniteJoy 
5  Milk  Oreo  InfiniteJoy 
6  I   Love  SQL 
7  I   Love  SQL 
8  I   Love  SQL 
9  I   Love  SQL 
10  I   Love  SQL 

私だけを返すことができなければなりません最小のインデックス番号/各レコードのインデックス番号:

1 
4 
6 
+0

どのDBMSを使用していますか?ここにたくさんの例があります:http://stackoverflow.com/questions/tagged/greatest-n-per-group+sql –

+0

2014 Managementスタジオを持つSQL Server 2008。 – Th3Phantomz

答えて

0

このようなグループを試してください

SELECT 
    IndNo 
FROM 
    `test` 
WHERE 
    Col1 "your criteria" 
    OR Col2 "your criteria" 
    OR Col3 "your criteria" 
GROUP BY Col1 , Col2 , Col3 
ORDER BY IndNo ASC 
+0

これはすべてのレコードセットの中で最も低いレコードレコードではなく、すべてを選択します。 – Th3Phantomz

0

あなたはこのような何かを試すことができます。

declare @tmpTable table(IndNo int, Col1 nvarchar(max), Col2 nvarchar(max), Col3 nvarchar(max)) 

insert into @tmpTable(IndNo, Col1, Col2, Col3) 
values (1, 'Peanut', 'Butter', 'Jelly'), 
     (2, 'Peanut', 'Butter', 'Jelly'), 
     (3, 'Peanut', 'Butter', 'Jelly'), 
     (4, 'Milk', 'Oreo', 'InfiniteJoy'), 
     (5, 'Milk', 'Oreo', 'InfiniteJoy'), 
     (6, 'I', 'Love', 'SQL'), 
     (7, 'I', 'Love', 'SQL'), 
     (8, 'I', 'Love', 'SQL'), 
     (9, 'I', 'Love', 'SQL'), 
     (10, 'I', 'Love', 'SQL') 


;With cte (IndNo, Col1, Col2, Col3, RowNum) 
    as (
     select IndNo, Col1, Col2, Col3, 
     ROW_NUMBER() OVER(partition by Col1 Order by Col1) as RowNum 
     from @tmpTable 
) 
select IndNo, Col1, Col2, Col3 
     from cte 
where RowNum = 1 
order by IndNo 

あなたはこれを達成するためにpartition byROW_NUMBER()機能を使用することができます。

0

Group Byを使用してレコードをグループ化できます。 SQLクエリは次のようになります。

select MIN(IndNo) as LowestIndexes 
from TableName 
where 'Check for the matching criteria in other columns' 
group by Col1, Col2, Col3 
order by MIN(IndNo) 
関連する問題