[英]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.