我正在Ruby中编写一个函数来从多个表中提取数据,然后将这些值插入“主”表中。问题是并非所有表都具有相同的模式。具体来说,一些表格有“X列”,而其他表格则缺少它。如何使用相同的查询从两个表中选择数据,还要处理列可能存在还是不存在的事实?我尝试了以下CASE,但它似乎不起作用:
select case
when column_x is not null then sum(column_x)
else null
end case
答案 0 :(得分:0)
如果所有表格不同,则不能对同一查询使用相同的查询。
一个简单的解决方案是将列X添加到其他表中,并在其中保留空值。当您在查询中编写SUM(column_x)
时,这些表格将为NULL
。
否则,如果您使用UNION
合并所有表格,则可以为这些表格添加NULL
:
SELECT column_x, column_y, column_z FROM table1
UNION
SELECT NULL, column_y, column_z FROM table2
如果您正在从Ruby执行单独的查询,则可以使用表名对其进行条件化。当它创建从其中一个表中读取而没有column_x
的查询时,它可以将NULL column_x
添加到SELECT
子句中,以便处理结果的代码不需要区分表格。