根据指标确定要选择的表

时间:2013-12-06 06:00:01

标签: oracle

我的情况是有三个表具有相同的表设计(相同的列数,相同的PK,相同的FK)但在一个日期存储不同的值,每个表中每天只存储一个数据。每个表都有一个标志列(Y或N),用于确定哪个应该是特定日期要报告的值。在一天内,只有一个表的值将被标记为一个CODE的Y.

示例:

Table 1:

Date | Code | Value | Flag 
01-DEC, ABC,  111, N

Table 2:

Date | Code | Value | Flag 
01-DEC, ABC,  222, N

Table 3:

Date | Code | Value | Flag 
01-DEC, ABC,  333, Y

参考上面的例子,日期的CODE ABC值:01-DEC应为333,因为它被标记为Y.

SQL应该如何?

1 个答案:

答案 0 :(得分:0)

首先,我强烈质疑具有三个相同表的数据模型,这些表似乎存储了基本相同的信息并且用于相同的目的。

您可以,假设只有一个Y行,请执行

SELECT *
  FROM( SELECT *
          FROM table1
        UNION ALL
        SELECT *
          FROM table2
        UNION ALL 
        SELECT *
          FROM table3 )
 WHERE flag = 'Y'