У меня есть представление, которое имеет эту структуру, которая представляет собой комбинацию из трех таблиц, для которых мне нужно сравнить значения в каждом числовом столбце (OCT_14, NOV_14, ETC.).Oracle SQL для сравнения числовых значений в том же столбце
TABLE PERIOD COUNTRY CODE POSITION OCT_14 NOV_14 DEC_14
TABLE_1 Q1 UK 123 EMPL .2 .2 .2
TABLE_2 Q1 Uk 123 EMPL .2 .2 .2
TABLE_3 Q1 UK 123 EMPL .3 .4 .4
Мне был предоставлен следующий код в предыдущем сообщении, но есть несколько вещей, которые мне нужно уточнить.
How to compare numerical values in the same columns for multiple columns using Oracle SQL
мне нужны дополнительные поля (период, страны, код и позицию) в запросе, и каждый из них создает уникальный идентификатор. Сравнение будет происходить в запросе, который возвращает строку сравнения, где (PERIOD, COUNTRY, CODE AND POSITION) одинаковы для каждой таблицы. В конечном счете, сравнивать строки будет возвращаться, как это ..
TABLE PERIOD COUNTRY CODE POSITION OCT_14 NOV_14 DEC_14
TABLE_1 Q1 UK 123 EMPL .2 .2 .2
TABLE_2 Q1 Uk 123 EMPL .2 .2 .2
TABLE_3 Q1 UK 123 EMPL .3 .4 .4
COMPARE ATTN ATTN ATTN
Когда я запускаю этот запрос я получаю аннулирует для сравнения строки, используя этот запрос, не Attn. Я считаю, что это потому, что этот уникальный элемент отсутствует. Спасибо за любую помощь, которую вы можете предложить.
Вот код в предыдущем посте:
Create Table V(TName VARCHAR(5), Oct_14 NUMBER(5,2), Nov_14 NUMBER(5,2), Dec_14 NUMBER(5,2));
Insert into V values('T1', 1.2, 1.2, 1.2);
Insert into V values('T2', 1.4, 1.5, 1.6);
Insert into V values('T3', 1.5, 1.5, 1.7);
SELECT TName, To_Char(Oct_14) Oct_14, To_Char(Nov_14) Nov_14, To_Char(Dec_14) Dec_14 from V
UNION
SELECT 'Compare',
(select 'ATTN' from dual where EXISTS (select 1 from V where TName = 'T3' and OCT_14 > ALL(SELECT
OCT_14 FROM V WHERE TName IN ('T1','T2')))) Oct_14_Res,
(select 'ATTN' from dual where EXISTS (select 1 from V where TName = 'T3' and Nov_14 > ALL(SELECT
Nov_14 FROM V WHERE TName IN ('T1','T2')))) Nov_14_Res,
(select 'ATTN' from dual where EXISTS (select 1 from V where TName = 'T3' and Dec_14 > ALL(SELECT
Dec_14 FROM V WHERE TName IN ('T1','T2')))) Dec_14_Res
FROM dual;
Hi..thanks для этого Раджеш. В вашей демонстрации SQL Fiddle все значения, которые вытащили назад из запроса, равны 0,00, поэтому не похоже, что есть какое-либо сравнение. Любая идея, почему, поскольку таблица имеет значения для OCT, NOV и DEC 2014? Спасибо, – Ewaver
Это отлично работает ..! Спасибо :) Если мне нужно ограничить данные, используя оператор where, куда бы он пошел? – Ewaver
Я изменил его, текст в ddl преобразовал значение в числовое istead десятичного числа. – radar