我有很多table.e.g。:tableName1,tableName2 ...,tableNameN
某些表的columnNames名为“ID”,“D1”,“D2”。
某些表只有名为“ID”,“D1”的列名。
如果运行下面的sql:
SELECT D1,D2 FROM tableName1
SELECT D1,D2 FROM tableName2
SELECT D1,D2 FROM tableName3
...
SELECT D1,D2 FROM tableNameN
因为某些表没有'D2'列,所以它会在某些表sql中崩溃。
它会显示'无效的列名“D2”'
如果表没有列名,如何让SQL没有崩溃?
我希望如果表没有'D2',则sql结果的列值是我指定的默认值。
高级问题:
如果表没有我想要的多个列。
某些表的columnNames名为“ID”,“D1”,“D2”,“D3”。
某些表只有名为“ID”,“D1”的列名。
我在下面试试这个,它正在发挥作用。
select t.*
from (select NULL as D2,NULL as D3) x cross apply
(select D2,D3
from t
) t
答案 0 :(得分:2)
使这项工作有一个技巧:
select t.*
from (select NULL as d2) x cross apply
(select d1, d2
from t
) t
如果d2
位于t
,则它将解析为t.d2
。否则,它将解析为x.d2
。
这是使用合格列名称的唯一情况。