2013-11-07 3 views
-1

Как добавить к этому запросу больше доступных столбцов данных в таблице? Я хочу добавить столбцы evnt_dat и evnt_desrp.добавление большего количества столбцов данных в запрос sql

SELECT DISTINCT 
     ROW_NUMBER() OVER (ORDER BY 
           panel_descrp 
          , cardno 
          , lname 
          ) rid 
    , panel_descrp 
    , cardno 
    , lname 

FROM ev_log 

where evnt_descrp = 'local grant' 
     and datepart(yyyy,EVNT_DAT) = datepart(yyyy,GETDATE()) 
     and DATEPART(mm,evnt_dat) = DATEPART(mm,getdate()) -1 
     and DATEPART(dd,evnt_dat) >= 1 and DATEPART(dd,evnt_dat)<=2 

    GROUP BY 
     panel_descrp 
    , cardno 
    , lname 
+0

Пробовали ли вы добавлять, перед 'от':«', evnt_dat, evnt_desrp'» –

+1

Я не получаю вас ... – tumchaaditya

+0

Я думаю, что этот запрос был сгенерирован для OP (или уже существует), и они просто не знают, как добавить больше столбцов в список –

ответ

0

Если вы хотите их там, вы должны включить их в предложении GROUP BY:

SELECT DISTINCT 
     ROW_NUMBER() OVER (ORDER BY 
           panel_descrp 
          , cardno 
          , lname 
          ) rid 
    , panel_descrp 
    , cardno 
    , lname 
    , evnt_dat 
    , evnt_desrp 

FROM ev_log 

where evnt_descrp = 'local grant' 
     and datepart(yyyy,EVNT_DAT) = datepart(yyyy,GETDATE()) 
     and DATEPART(mm,evnt_dat) = DATEPART(mm,getdate()) -1 
     and DATEPART(dd,evnt_dat) >= 1 and DATEPART(dd,evnt_dat)<=2 

    GROUP BY 
     panel_descrp 
    , cardno 
    , lname 
    , evnt_dat 
    , evnt_desrp 
; 

Или использовать некоторую агрегатную функцию на них, например MAX (тогда вы не должны поместить их в предложении GROUP BY, но смысл запроса не может быть то, что вы ожидаете):

SELECT DISTINCT 
     ROW_NUMBER() OVER (ORDER BY 
           panel_descrp 
          , cardno 
          , lname 
          ) rid 
    , panel_descrp 
    , cardno 
    , lname 
    , MAX(evnt_dat) 
    , MAX(evnt_desrp) 
FROM ev_log 

where evnt_descrp = 'local grant' 
     and datepart(yyyy,EVNT_DAT) = datepart(yyyy,GETDATE()) 
     and DATEPART(mm,evnt_dat) = DATEPART(mm,getdate()) -1 
     and DATEPART(dd,evnt_dat) >= 1 and DATEPART(dd,evnt_dat)<=2 

    GROUP BY 
     panel_descrp 
    , cardno 
    , lname 
; 
+0

с использованием функции MAX предоставляет желаемые результаты запроса, но если я добавлю evnt_dat и evnt_descrp в функцию GROUP BY чтобы возвращать/отображать эти столбцы, он изменяет результаты. – user2967024

+0

@ user2967024. Вы должны либо добавить их в предложение GROUP BY, либо использовать версию запроса с помощью функции агрегации «MAX». Не используйте оба, потому что, конечно, вы получите разные результаты - вы будете агрегировать еще на двух столбцах. Вам не нужно добавлять эти столбцы в 'GROUP BY', чтобы отображать их, вы уже показываете их с помощью' MAX (event_dat) 'и' MAX (event_desrp) '. –

+0

благодарит Przemyslaw, – user2967024

Смежные вопросы