【发布时间】:2014-06-27 16:09:57
【问题描述】:
注意:这是针对 SQL Server 2008 的。
我有一个包含许多列的表,其中两个与本次讨论相关:Object 和 TableID。对象是一个可读的名称。 TableID 对应于与 Object 关联的表,尽管关联的表都以字母 T 开头,如表 T135 或表 T143。
SchemaTable
Object TableID /* Object is type varchar, TableID is type int
Form1 135
Form2 143
Form3 321
我想制作一个 SQL 查询,它将根据 Object 的值从这些表中选择内容。这是我到目前为止所拥有的(不起作用):
SELECT Col1, Col2
FROM (
SELECT (T' + CAST(TableID AS VARCHAR))
FROM SchemaTable
WHERE Object = 'Form1'
)Tbl_T
WHERE Col1 IS NOT NULL
我可以使用子查询以这种方式选择表吗?如果没有,您还有什么建议以及如何建议?
非常感谢您的帮助。
编辑
我的问题或疑问似乎不清楚。让我尝试解决这个问题。
我可以像这样直接选择表 T135:
SELECT Col1, Col2
FROM T135
WHERE Col1 IS NOT NULL
但我想做的是根据表SchemaTable 中的列Object 选择表T135。
你看到了吗?我不想从表SchemaTable 中选择值的子表。我只想获取TableID(即135)并从所述表中选择内容(即T135)。表 T135 中没有 TableID 列。 TableID 实际上对应于表的名称。它不用作其他表的键或标识。我认为这就是我在理解我想要完成的目标时感到困惑的地方。
我希望这更清楚。
感谢您的帮助。
【问题讨论】:
-
您必须使用动态查询。
-
您可以添加您的预期结果吗?
-
谢谢你,哈姆雷特。我认为这可以解决问题。
标签: sql sql-server sql-server-2008 dynamic subquery