У меня есть таблица vbap: для всех отдельных POSNR, PARVW мне нужно проверить, является ли POSNR=POSNR2, если это так, я выбираю KUNNR. если POSNR<>POSNR2 и POSNR2 = ‘00000’, я выбираю KUNNR
Результат:
Я не понял, как это сделать?
Это кажется просто where
причиной:
select t.*
from t
where POSNR2 in (POSNR, '00000')
Возможно, вы пытаетесь расставить приоритеты для строк, чтобы выбрать одну строку для каждого kunnr
. Если так:
select t.*
from (select t.*,
row_number() over (partition by parvw order by psnr2 desc) as seqnum
from t
where POSNR2 in (POSNR, '00000')
) t
where seqnum = 1;
Сделай это over (partition by vbeln, posnr, parvw order by posnr2 desc)
. (Или, если вы должны уметь работать и с отрицательными числами: over (partition by vbeln, posnr, parvw order by case when posnr2 = posnr then 1 else 2 end)
.)
@ThorstenKettner точно !!
Для того же [PARVW] мне нужно выбрать POSNR2 = POSNR иначе POSNR2 = '00000'.. первый запрос возвращает два результата для POSNR = 000025: 0000515408 и 0000502356.. Мне нужно расставить приоритеты в случае POSNR2 = POSNR