0

列名 RowN が有効でないため、次のクエリは機能しません。適切に機能させるためのエレガントな方法はありますか?

select 
    *,
    ROW_NUMBER() over(PARTITION BY matricola order by esercizio desc, cod_valutazione, valutaz_sintetica, matricola, FigureOrder) AS RowN
from 
    (
select distinct
    '' as pdf,  
    Vm.NomeManager + ' ' + Vm.CognomeManager as valutatore, 
    vpd.ESERCIZIO as esercizio, 
    vpd.cod_valutazione, 
    Vm.NomeValutato +' ' + Vm.CognomeValutato as valutato,  
    vpd.matricola,  
    valutaz_sintetica,  
    vpd.COD_STATO as stato_scheda, 
    vpd.VALUTAZIONE_RANKING_SINTETICA,  
    vvv.COD_FIGURA,
    case
        when COD_FIGURA = 'OWNG' then 0
        when COD_FIGURA = 'VAL1' then 1
        when COD_FIGURA = 'OWN' then 2
    end as FigureOrder
from    
    View_SchedePerDistribuzione vpd     
    inner join RL_VALUTAZIONE_VALUTATI_VALUTATORI vvv ON vpd.COD_VALUTAZIONE = vvv.COD_VALUTAZIONE AND vpd.MATRICOLA = vvv.MATRICOLA_VALUTATO   
    inner join ValutatiManager  Vm ON vpd.MATRICOLA = Vm.MatricolaVAlutato and vpd.COD_VALUTAZIONE = Vm.COD_VALUTAZIONE 
where 
    vpd.cod_valutazione='PA_DPO_11-12' and 
    chiusa = 0 AND 
    VVV.COD_FIGURA IN ('VAL1', 'OWN', 'OWNG') AND 
    VVV.Matricola = '30000027') as tab
where 
    RowN = 1
order by esercizio desc, cod_valutazione, valutaz_sintetica, matricola, FigureOrder
4

2 に答える 2

1

サブクエリまたは CTE に埋め込むだけです。

with t as (<your query minus the WEHRE and ORDER BY>)
select *
from t
where RowN = 1
order by esercizio desc, cod_valutazione, valutaz_sintetica, matricola, FigureOrder 
于 2012-07-23T14:14:08.897 に答える
0

使うだけじゃないの

select top 1 * from (...)
于 2012-07-23T14:13:52.167 に答える