0
我有一個視圖,該結構是3個表的組合,我需要比較每個數值列(OCT_14,NOV_14等)中的值。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,代碼和位置)查詢和每個這些創建一個唯一的ID。比較將發生在將返回比較行的查詢中,其中(PERIOD,COUNTRY,CODE和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 2014-10-02 16:28:48
這很好.. ..!謝謝:)如果我需要限制數據使用where語句它會去哪裏? – Ewaver 2014-10-02 16:38:26
我修改了它,文本以ddl轉換後的值爲數字而不是小數。 – radar 2014-10-02 16:47:00