2015-09-10 11 views
0

У меня есть запрос:SQL DB2 Max Дата необходимая для Даты сгенерированной от Case

select nfdoco as lease ,NFEFTE as billingend , NFSUDT as bill_suspend_date, NFAG/100 as rent, 
case 
when NFSUDT = 0 then NFEFTE 
else min(NFEFTE , NFSUDT) 
end as BillEndDate 

from proddta.f1502b 

where NFGLC in ('MINR', 'MING') 

Мне нужно, чтобы получить максимальную BillEndDate для каждого nfdoco. Раньше я использовал аналогичную функцию с плотным рангом, однако это, похоже, не работает, поскольку вычисляется столбец, который я пытаюсь выполнить max.

Возможно ли это? Есть ли у кого-нибудь предложения по альтернативным маршрутам?

+0

Это для SQL Server или DB2? – DavidG

+0

вы можете попытаться поместить свой выбор внутри другого выбора, иначе вы можете отправить BillEndDate так, как если бы оно имело нормальное поле. Сокет, подобный select max (t.billenddate) из (ваш выбор) t – GuidoG

+0

Я создаю представления DB2, используя SQL, чтобы подключиться к AS400 – 4bpauly

ответ

1

не проверял, но на SQL сервере это должно работать

select T.lease, T.billingend, T.NFSUD, T.RENT, max(T.BillEndDate) 
from (
    select nfdoco as lease , 
     NFEFTE as billingend , 
     NFSUDT as bill_suspend_date, 
     NFAG/100 as rent, 
     case 
      when NFSUDT = 0 then NFEFTE 
      else min(NFEFTE , NFSUDT) 
     end as BillEndDate 
    from proddta.f1502b 
    where NFGLC in ('MINR', 'MING') 
    ) T 
group by T.lease, T.billingend, T.NFSUD, T.RENT 

для последнего изменения комментария запрос, как этот

select T.lease, T.RENT, max(T.BillEndDate) 
from (
    select nfdoco as lease , 
     NFEFTE as billingend , 
     NFSUDT as bill_suspend_date, 
     NFAG/100 as rent, 
     case 
      when NFSUDT = 0 then NFEFTE 
      else min(NFEFTE , NFSUDT) 
     end as BillEndDate 
    from proddta.f1502b 
    where NFGLC in ('MINR', 'MING') 
    ) T 
group by T.lease, T.Rent 

Если это не то, что вы wante просьба указать подробнее что вам нужно

+0

большое спасибо! У меня его нет на 100% - есть несколько изменений, но я определенно на правильном пути! – 4bpauly

+0

Это ответ помогает, подумайте о принятии или повышении – GuidoG

+0

Единственное, что Guido - этот запрос действительно работает (в том, что он не генерирует ошибок), но мне нужно получить ренту для max (BillEndDate) для каждого лизинг. Я все еще получаю несколько строк для каждой аренды. Я не знаю, как это понять. Я буду рад принять ответ, как только он будет завершен - просто для того, чтобы он был наиболее полезен для других пользователей. Как я уже сказал, я новичок в этом. Благодаря! – 4bpauly

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