[英]Oracle SQL for Comparing numerical values in the same column
我有一個具有這種結構的視圖,該結構是3個表的組合,我需要針對這些表比較每個數字列(OCT_14,NOV_14,ETC。)中的值。
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
在上一篇文章中為我提供了以下代碼,但是我需要澄清的事情很少。
我在查詢中需要其他字段(PERIOD,COUNTRY,CODE和POSITION),並且每個字段都會創建一個唯一的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;
這是SQL Fiddle演示: http ://www.sqlfiddle.com/#!4/1462f7 /3
select "TABLE", "PERIOD", "COUNTRY", "CODE", "POSITION", to_char(Oct_14) Oct_14 , To_Char(Nov_14) Nov_14, To_Char(Dec_14) Dec_14 from Table1
union
select 'COMPARE', '','', NULL, '',
(select 'ATTN' from dual where EXISTS (select 1 from Table1 where "TABLE" = 'TABLE_3' and OCT_14 > ALL(SELECT OCT_14 FROM Table1 WHERE "TABLE" IN ('TABLE_1','TABLE_2')))) Oct_14_Res,
(select 'ATTN' from dual where EXISTS (select 1 from Table1 where "TABLE" = 'TABLE_3' and Nov_14 > ALL(SELECT Nov_14 FROM Table1 WHERE "TABLE" IN ('TABLE_1','TABLE_2')))) Nov_14_Res,
(select 'ATTN' from dual where EXISTS (select 1 from Table1 where "TABLE" = 'TABLE_3' and Dec_14 > ALL(SELECT Dec_14 FROM Table1 WHERE "TABLE" IN ('TABLE_1','TABLE_2')))) Dec_14_Res
FROM dual;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.