Sql 使用Select将表名追加到字段名*

Sql 使用Select将表名追加到字段名*,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,对不起,如果这是重复的。我已经搜索过了,但只找到了别名字段和表 我有一个问题: SELECT * FROM MyTable1 ca LEFT OUTER JOIN MyTable2 dcn ON dcn.dstrct_code = ca.dstrct_code LEFT OUTER JOIN MyTable2 cdn ON cdn.dstrct_code = ca.cost_dstrct_cde LEF

对不起,如果这是重复的。我已经搜索过了,但只找到了别名字段和表

我有一个问题:

 SELECT *
FROM MyTable1 ca LEFT OUTER JOIN MyTable2 dcn ON dcn.dstrct_code = ca.dstrct_code
                       LEFT OUTER JOIN MyTable2 cdn ON cdn.dstrct_code = ca.cost_dstrct_cde
                       LEFT OUTER JOIN MyTable3 bb ON bb.supplier_code = ca.supplier_code
 WHERE ca.dstrct_code = '0001'                                 
 AND ca.req_232_type = 'P'
 AND ca.requisition_no = '264982  000'
 AND ca.alloc_count = '01'
ORDER BY ca.alloc_count ASC

请不要因为我使用
*
而责骂我,我还没有完成查询。如果我执行这个查询,我会得到一行数据,但是我从所有表中选择的表都有大量的字段,并且许多表都是同时命名的。所以我的问题是。。。还有什么方法可以从中选择*并将表名附加到字段名,以便更清楚地显示哪个字段属于哪个表吗?

我认为没有办法直接这样做,但您可以这样做。运行如下查询:

SELECT 
    (case t.name when 'MyTable1' then 'ca' when 'MyTable2' then 'dcn' when 'MyTable3' then 'cdn' when 'MyTable4' then 'bb' end)
    + '.' + c.name
    + ' AS "' + t.name + '.' + c.name + '",'
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE t.name in ('MyTable1', 'MyTable2', 'MyTable3', 'MyTable4')
ORDER BY t.name
运行它,最好将结果转换为文本(Ctrl+T),并在原始查询中使用结果而不是
*
。您必须手动删除最后一行中的逗号

如果您喜欢这种方法,可以使用一些动态SQL来简化流程