日期:2014-05-17  浏览次数:20579 次

如何用SQL语名使查询结果的字段名称显示为Table.Field
我写了一个动态向CXGRID中增加字段列的小东西,现在出了一个问题,当查询一个表时没有什么问题,当查询两个表时,如果这两个表中有相同字段时,最后导致这两列在CXGRID中显示的值是完全相同的。
所以我想知道,怎么样能用最简单的方法得出以下结果:

有表T
其中字段 a,b,c

怎么用SELECT 语句 查询后其结果显示为

字段名称    T.a    T.b    T.c
------------------------------------
             1     张三    女
             2     李四    女
             3     王五    男



------解决方案--------------------

declare @sql varchar(1000)
select @sql=isnull(','+@sql,'')+name+' as T.'+name from syscolumns where  id=object_id('T')
set @sql='select '+@sql+'from T'
exec(@sql)

------解决方案--------------------

declare @sql varchar(max)
SET @sql=''
select @sql=@sql+CASE WHEN @sql='' THEN '' ELSE ',' end+name+' as [tb.'+name+']' from syscolumns where  id=object_id('tb')
set @sql='select '+@sql+' from tb'
exec(@sql)

------解决方案--------------------
1. 不知道楼主这样做有什么意义?字段名相同,意义不一样相同,比大多数表都有ID字段,但它们意义不一样,如果作为别的表的外键,它的名字也不能取名为ID。
2. 楼主可能是查询时,如果字段名一样,就要加表名在前(T.ID),做关联查询时,只要字段名不一样,都可以不带表名,如果字段名一样,一定要带表名.
3. 在程序中最好都能够带出字段所属的表名,以免哪天程序加一个字段与关联查询字段名一样而导致错误