У меня были проблемы с копированием старых файлов ASP в более новый код .NET 2.0. Одна из задач - объединить 4-5 операторов SQL в один. Несмотря на то, что я сделал это и добился некоторого успеха в повышении производительности, Oracle стал для меня новой сумкой. Эта проблема, однако, превосходит мои собственные навыки SQL, поскольку я не делал этого раньше.
По сути, у меня КОЛИЧЕСТВО в одной таблице из группы продаж. Каждая продажа имеет целочисленное значение. К каждой продаже также прикреплен ПУНКТ. У каждого ПУНКТА есть фактор КОНВЕРСИИ, например, если я продам 1 пакетик чего-либо = 10 наборов чего-либо Поэтому, когда я запускаю отчет и хочу узнать конечную стоимость, мне нужно взять каждую продажу и ее количество и умножить ее на коэффициент пересчета. Большинство из них простые 1 к 1, так что в основном это 25 * 1, 30 * 1 и т. Д.
Моя проблема в том, что в моих записях были прошлые продажи, в которых ПУНКТ был удален из нашей системы, поэтому фактор КОНВЕРСИИ не существует. Эти записи удаляются из моего запроса, потому что ФАКТОР исчез.
SELECT rth.CODE, rth.NUMBER, rth.QUANTITY, rth.sale_code
FROM salesdetails rth, salesheader rsh
WHERE rsh.number = rth.number(+)
AND rsh.customer_code = '05'
AND rsh.r_code = '01'
AND rsh.location_code = '12'
AND rth.sale_code IN('ITEM07')
AND rth.c_code = 'WLMT'
AND rsh.year = '2008'
Это мой первый запрос. Если я добавлю преобразование в:
SELECT rth.CODE, rth.NUMBER, rth.QUANTITY, rth.sale_code, rth.quantity * cf.conversion
FROM salesdetails rth, salesheader rsh, conversionfactor cf
WHERE rsh.number = rth.number(+)
AND rsh.customer_code = '05'
AND rsh.r_code = '01'
AND rsh.location_code = '12'
AND rth.sale_code IN('ITEM07')
AND rth.c_code = 'WLMT'
AND rsh.year = '2008'
AND cf.item_code = rth.item_code
and cf.code = '01'
and cf.loc_code = '00001'
Это работает до определенной степени. В нем перечислены все те же записи, но в нем отсутствуют записи, в которых не существовал фактор CONVERSION. Могу ли я в любом случае включить те записи, в которых ФАКТОР не существовал во втором запросе, если не считать перехода строка за строкой и преобразования таким образом.