很抱歉,如果这是重复的话。我搜索过但只找到别名字段和表格。
我有一个问题:
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 * from
并将表名附加到字段名称,以便更明显哪个字段属于哪个表?
答案 0 :(得分:3)
我认为没有办法直接这样做,但你可以这样做。运行如下查询:
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简化流程。