Фильтрация строки из возвращаемого значения - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я создаю список 5 лучших, который ранжируется по значению. Я передаю @InfoId = 12, который возвращает ожидаемые значения. Но я не хочу показывать строку, в которой @InfoId = @InformationId

Так, например, если я передаю параметр 12 как InfoId; Я не хочу показывать первую строку в приведенном ниже примере таблицы, где `InformationId = 12.

Вот пример возврата, который я получаю при выполнении моего запроса select

+------------------------------------+
| StateId InformationId CurrentValue |
+------------------------------------+
| 1             12           453231  |
| 1             10           394721  |
| 1             341          309425  |
| 1              21          308431  |
| 1              73          301342  |
+------------------------------------+

Вот пример того, чего я ожидаю:

+------------------------------------+
| StateId InformationId CurrentValue |
+------------------------------------+
| 1             10           394721  |
| 1             341          309425  |
| 1             21           309321  |
| 1             73           308431  |
| 1             62           301342  |
+------------------------------------+

Вот мой код:

    @StateId int
    , @InfoId int    
    , @CurrentValue int  -- My new parameter 
AS
BEGIN       
        select      top 5
                    i.StateId,
                    i.InformationId,
                    i.CurrentValue,

        from        dbo.tblInformation i

        inner join  dbo.tblInformationAnalysis ia
        on          ia.StateId= i.StateId
        and         ia.InformationId= i.InformationId
        and         ia.CurrentValue= i.CurrentValue

        inner join  (
                    select  
                                StateId,
                                InformationId,
                                CurrentValue,
                    from        dbo.tblInformationAnalysis
                    where       StateId = @StateID

                    group by    StateId,
                                InformationId,
                                CurrentValue,
                    ) via
        on          via.stateId= ia.stateid
        and         via.informationId= ia.informationId
        and         via.CurrentValue= ia.CurrentValue

        inner join  dbo.tblRetailData r
        on          r.stateId= i.stateid
        and         r.informationId= i.informationId
        and         r.CurrentValue= i.CurrentValue

        inner join  dbo.tblCounty c
        on          c.stateId= r.stateid
        and         c.informationId= r.informationId
        and         c.CurrentValue = 1

        inner join  dbo.tblRetailDataPublished rp
        on          rp.stateId= i.stateId
        and         rp.informationId= i.informationId
        and         rp.CurrentValue = i.CurrentValue 

        inner join  dbo.RetailCollection rc
        on          rc.stateId= i.stateId
        and         rc.informationId= i.informationId

        where       i.StateId= @StateId
        and         p.InformationId = @InfoId

END
...