2011-12-10 16 views
0

コード、年、パーセントの3つの列を持つ表があります。私はこの後、2009年で最低(最小限)の割合でコードを返す必要がsql - 最大値を見つける

は、私はまた、私が作った他のテーブルにexsistコードの名前をしたいです。

私はCREATE VIEWを使用してと思うが、私はそうしないことを好みます。

+0

'割合によってyourtableどこ年= 2009オーダーからネクタイコードでトップ1を選択' –

+0

@Oded Alwayesはビューが既に私のDBに定義されているという問題を私に与えます。私はこれがウェブであることを読んで、私はそれを解決する。しかし、時々、問題は繰り返されます。 –

+0

結びつきは可能ですか? 1年に2つのコードが同じパーセンテージを持つことはできますか? – Sparky

答えて

5
Select table.code, table.year, table.percentage, othertable.name 
from table 
inner join othertable on table.FKId = othertable.PKid 
where year = 2009 
    and percentage = 
    (select min(percentage) 
    from table 
    where year = 2009) 

othertableを含むように更新されました...名前がないためです。

は今、私たちはテーブル名が...今私は年が文字列であることを知っている第三の時間を更新したことを を更新しました。サンプルデータ:コメントから

Select E.Code, C.Name 
From dbo.Exam E 
inner join dbo.Course C 
    ON E.Code = C.Code 
Where E.Year = '2009' and --<-- PROBLEM LIKELY HERE year was string not int. 
E.Fail = (select MIN(E2.Fail) 
        from dbo.Exam E2 where E2.Year = '2009') --<--Don't forget here too. 

INSERT INTO Exam VALUES(333,'2009',40) 
INSERT INTO Exam VALUES(333,'2009',20) 
INSERT INTO Exam VALUES(555,'2009',19) 
INSERT INTO Exam VALUES(444,'2009',19) 
INSERT INTO Exam VALUES(777,'2009',23) 
INSERT INTO Exam VALUES(333,'2009',0) 
INSERT INTO Course VALUES(111,'Name1',5) 
INSERT INTO Course VALUES(333,'Name2',5) 
INSERT INTO Course VALUES(444,'Name3',6) 
INSERT INTO Course VALUES(555,'Name4',3) 
INSERT INTO Course VALUES(777,'Name5',3) 
INSERT INTO Course VALUES(999,'Name6',6) 

仮定が結果が Name2は、5

+0

正確に私が投稿しようとしていたもの。私を狙撃用1:P –

+0

はまだコードの名前を調べる必要がありますが、それはどこcode' – Andomar

+0

@xQbert 'セレクトコード、分(パーセント)でいただきました!間違って参加するのです - それは動作しません。各コードの最小パーセンテージが見つかります。 –

0

あなたは今年の最安割合を見つけることgroup byを使用して、参加することができなければなりませんですメインテーブルに戻って対応する他の列を見つける:

select * 
from CodeYearPercTbl cyp 
join CodeTbl c 
on  c.Code = cyp.Code 
join (
     select Year 
     ,  min(Percentage) as MinPerc 
     from CodeYearPercTbl 
     group by 
       Year 
     ) as filter 
on  filter.Year = cyp.Year 
     and filter.MinPerc = cyp.Percentage 
where cyp.Year = 2009 
0

表-1:コード、年、パーセンテージ 表2:コード、コードネーム

select T1.Code,T2.CodeName,T1.Percentage from 
(
    select TOP 1 Code,Percentage 
    from Table-1 
    where Year = '2009' 
    order by Percentage asc 
) T1 inner join Table-2 T2 on T1.Code = T2.Code 
0

はこれを試してみてください:

select a.Code, c.Name 
from YourTable a inner join AnotherTable c on a.Code = c.Code 
where a.Percentage = (select MIN(Percentage) 
         from YourTable b where b.Year = '2009' 
        ) 
関連する問題