SQL-запрос для разных значений - PullRequest
1 голос
/ 13 ноября 2010

У меня есть таблица, как показано ниже

INTERPRO    GOTERM1  GOTERM2   CONFIDENCE

IPR123      1576     2345       1.000
IPR235      3459     4987       1.000
IPR356      9987     5567       1.000
IPR568      3345     3213       0.88
IPR342      7860     7654       0.88 

Теперь я хочу любую запись с отчетливыми значениями достоверности, как показано ниже

IPR123   1576    2345   1.000
IPR342   7860    7654    0.88

Ответы [ 3 ]

2 голосов
/ 13 ноября 2010

Используя Sql Server 2005+, вы можете попробовать что-то вроде

;WITH Vals AS(
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY CONFIDENCE ORDER BY INTERPRO ) RowID
        FROM    YourTable
)
SELECT  *
FROM    Vals
WHERE   RowID = 1

ROW_NUMBER (Transact-SQL)

0 голосов
/ 13 ноября 2010

, если INTERPRO уникально

SELECT * FROM TABLE WHERE INTERPRO in 
(
SELECT MIN(INTERPRO) FROM TABLE
GROUP BY CONFIDENCE
)  

вы можете заменить MIN () на что угодно

0 голосов
/ 13 ноября 2010
SELECT t.INTERPRO, t.GOTERM1, t.GOTERM2, t.CONFIDENCE
FROM   tbl t
WHERE  t.INTERPRO = (SELECT MIN(t2.INTERPRO)
                     FROM   tbl t2
                     WHERE  t.CONFIDENCE = t2.CONFIDENCE)

Редактировать:

Если INTERPRO не является уникальным для УВЕРЕННОСТИ:

SELECT t2.INTERPRO, t2.GOTERM1, t2.GOTERM2, t1.CONFIDENCE
FROM   (SELECT DISTINCT t3.CONFIDENCE FROM tbl t3) t1,
       (SELECT TOP 1 t4.INTERPRO, t4.GOTERM1, t4.GOTERM2
        FROM   tbl t4
        WHERE  t4.CONFIDENCE = t1.CONFIDENCE) t2

должно работать, хотя у меня нетЭкземпляр SQL Server в данный момент удобен для двойной проверки.

...