これは私のデータベース構造 データベース作成testGroupfirst; は、これは私が条件ベースの結果ベース別グループの最初のレコードを取得
選択名、年、学位、名前でtestTblグループから場所、YEAR、程度によって、単純なグループを作成し、今
までの結果は
use testGroupfirst;
go
create table testTbl (
id int primary key identity,name nvarchar(50) ,year int ,degree int , place nvarchar(50)
)
insert into testTbl values ('jack',2015,50,'giza')
insert into testTbl values ('jack',2016,500,'cai')
insert into testTbl values ('jack',2017,660,'alex')
insert into testTbl values ('jack',2018,666,'giza')
insert into testTbl values ('jack',2011,50,'alex')
insert into testTbl values ('rami',2015,5054,'giza')
insert into testTbl values ('rami',2016,1500,'cai')
insert into testTbl values ('rami',2017,66220,'giza')
insert into testTbl values ('rami',2018,6656,'alex')
insert into testTbl values ('rami',2011,540,'cai')
insert into testTbl values ('jack',2010,50,'cai')
select * from testTbl
行きます、場所
図2に示すように - 最初のユーザーのデータと最初の年の詳細な説明を取得したい - カーソルはそれを作ることができましたが、私はそれを使いたくないと思っていました。状況をより良いやり方で処理するか、クロス・アプリケーションやcteのようにします。 ここで関連する質問が見つかりました Get top 1 row of each group これは私の状況では機能しません。または適用できないため、ここでこの新しい質問をしました。
ので、私は
あなたの最初のクエリのルックス私に間違っている。なぜここで行番号と共に 'GROUP BY'を使用していますか? –
@TimBiegeleisen OPが持っていたクエリをコピーしました。しかし、あなたは絶対に正しいです、あなたは 'GROUP BY'を必要としません。そして、私はオプティマイザがそれを無視することさえ確信しています。 –