我的情况是有三个表具有相同的表设计(相同的列数,相同的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应该如何?
答案 0 :(得分:0)
首先,我强烈质疑具有三个相同表的数据模型,这些表似乎存储了基本相同的信息并且用于相同的目的。
您可以,假设只有一个Y
行,请执行
SELECT *
FROM( SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
UNION ALL
SELECT *
FROM table3 )
WHERE flag = 'Y'