3

次のようなテーブルがあります。

TypeID   Name         Date
-------------------------------
1        Carrot    1-1-2013
1        Beetroot  1-1-2013
1        Beans     1-1-2013
2        cabbage   1-1-2013
2        potato    1-1-2013
2        tomato    1-1-2013
2        onion     1-1-2013

2 行が必要な場合は、TypeId 1 から 2 行と TypeId 2 から 2 行を返す必要があります。4 行のみが必要な場合は、TypeId 1 から 4 行、TypeId 2 から 4 行を取得する必要がありますが、TypeId 1 には 3 行しかありません。したがって、typeId 1 に対して 3 行のみを取得する必要があります

どうやってするか?RowNumber を追加しますか?

4

4 に答える 4

1

で並べ替えるクエリを作成できますTypeID

次に、SQL を使用している場合は、SELECT TOP NまたはLIMIT N(DB に応じて) を使用するか、TSQL および SQL Server を使用TOP(N)して上位 N 行を取得します。

C# コードから LINQ ベースの ORM を使用している場合は、 を使用できますTake(N)。これにより、プロバイダーの詳細に基づいて適切なクエリが自動的に作成され、結果の数が制限されます。

于 2013-08-01T17:20:04.030 に答える
0
;With CTE(TypeID,Name,Date,RowNo)
AS
(
select *, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID)  from TableVEG
)
Select Top(@noofRows*2) * from CTE where RowNo<=@noofRows order by rowno

上記のクエリは機能しました..ありがとうございました... :-)

于 2013-08-01T18:21:52.763 に答える