+ -
当前位置:首页 → 问答吧 → sql查询as别名如何动态?

sql查询as别名如何动态?

时间:2011-11-04

来源:互联网

比如表a有字段:
cname:“名字”,
cid:“111111”
表b有字段:
cid:“111111”,
dvalue:“王三”;
表b引用表a,要得到的查询结果:
名字
王三
我的查询语句:
select b.dvalue as (select cname from 表a where cid = b.cid) from 表b b
但是行不通,那怎么查询呢?

作者: d925529   发布时间: 2011-11-04

就你这样的数据,可以这样处理:
SQL code
create table t1(cname nvarchar(10),cid varchar(10))
insert into t1 select '名字','111111'
create table t2(cid varchar(10),dvalue nvarchar(10))
insert into t2 select '111111','王三'
go
declare @sql nvarchar(max),@sql1 nvarchar(max)
select @sql=cname,@sql1=cid from t1
exec('select dvalue as '+@sql+' from t2 where cid='''+@sql1+'''')
/*
名字
----------
王三

(1 行受影响)

*/
go
drop table t1,t2


作者: qianjin036a   发布时间: 2011-11-04

学习
SQL code
declare @sql nvarchar(2000),@sql1 nvarchar(2000)
select @sql=cname,@sql1=cid from t1
--set @sql2 ='select dvalue as '+@sql+' from t2 where cid='''+@sql1+''''
--select @sql2
exec('select dvalue as '+@sql+' from t2 where cid='''+@sql1+'''')

作者: dovei   发布时间: 2011-11-04

动态拼接字符串
SQL code
exec('select 字段 as'+@别名+' from tb')

作者: ssp2009   发布时间: 2011-11-04

引用楼主 d925529 的回复:
比如表a有字段:
cname:“名字”,
cid:“111111”
表b有字段:
cid:“111111”,
dvalue:“王三”;
表b引用表a,要得到的查询结果:
名字
王三
我的查询语句:
select b.dvalue as (select cname from 表a where cid = b.cid) from 表b b
但是行不通,那怎么查询呢?


SQL code


create table a(cname nvarchar(10),cid varchar(10))
insert into a select '名字','111111'
insert into a select N'性別','222222'
create table b(cid varchar(10),dvalue nvarchar(10))
insert into b select '111111','王三'
insert into b select '222222',N''
go
DECLARE @s NVARCHAR(1000)
SELECT @s=ISNULL(@s+',','select ')+'MAX(CASE WHEN Cid='''+Cid+''' then dvalue else '''' end) as '+QUOTENAME(cname) FROM a
PRINT @s
EXEC(@s+' from b')

/*
名字    性別
王三    男
*/

--DROP TABLE a,b

作者: roy_88   发布时间: 2011-11-04

猜一個,給你加多數據

作者: roy_88   发布时间: 2011-11-04

动态SQL

不过不清楚楼主什么样的需求要这样处理?

作者: wanglingzhong   发布时间: 2011-11-04