首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么将某列值作为查询内容

2012-02-25 
如何将某列值作为查询内容?如:SELECTxt_zlb.dh,xt_ddb.fwz,test.cFROMxt_zlbINNERJOINxt_ddbONxt_zlb.ddid

如何将某列值作为查询内容?
如:SELECT   xt_zlb.dh,   xt_ddb.fwz,   test.c
FROM   xt_zlb   INNER   JOIN
            xt_ddb   ON   xt_zlb.ddid   =   xt_ddb.ddid   INNER   JOIN
            xt_qyb   ON   xt_ddb.qyid   =   xt_qyb.qyid   CROSS   JOIN
            test

列test.c储存的内容为xt_ddb.sx,   xt_qyb.qym

想得到如下的结果:将test.c储存的内容作为查询内容
SELECT   xt_zlb.dh,   xt_ddb.fwz,   xt_ddb.sx,   xt_qyb.qym
FROM   xt_zlb   INNER   JOIN
            xt_ddb   ON   xt_zlb.ddid   =   xt_ddb.ddid   INNER   JOIN
            xt_qyb   ON   xt_ddb.qyid   =   xt_qyb.qyid

[解决办法]
declare @sql varchar(8000)

SELECT @sql = test.c
FROM xt_zlb INNER JOIN
xt_ddb ON xt_zlb.ddid = xt_ddb.ddid INNER JOIN
xt_qyb ON xt_ddb.qyid = xt_qyb.qyid CROSS JOIN
test
set @sql = 'SELECT xt_zlb.dh, xt_ddb.fwz, '+@sql+ 'FROM xt_zlb INNER JOIN
xt_ddb ON xt_zlb.ddid = xt_ddb.ddid INNER JOIN
xt_qyb ON xt_ddb.qyid = xt_qyb.qyid '
exec(@sql)
[解决办法]
没看明
[解决办法]
create function fn (@ddid int,@qyid int)
returns varchar(8000)
as
begin
declare @sql varchar(8000)

SELECT @sql = test.c
FROM xt_zlb INNER JOIN
xt_ddb ON xt_zlb.ddid = xt_ddb.ddid INNER JOIN
xt_qyb ON xt_ddb.qyid = xt_qyb.qyid CROSS JOIN
test where xt_zlb.ddid = @ddid and xt_ddb.qyid = @qyid
return @sql
end
go
declare @sql varchar(8000)

select @sql = 'SELECT xt_zlb.dh, xt_ddb.fwz, '+dbo.fn(xt_zlb.ddid,xt_ddb.qyid)+ 'FROM xt_zlb INNER JOIN
xt_ddb ON xt_zlb.ddid = xt_ddb.ddid INNER JOIN
xt_qyb ON xt_ddb.qyid = xt_qyb.qyid '
FROM xt_zlb INNER JOIN
xt_ddb ON xt_zlb.ddid = xt_ddb.ddid INNER JOIN
xt_qyb ON xt_ddb.qyid = xt_qyb.qyid
exec(@sql)

热点排行