| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 754 人关注过本帖
标题:求sqlserver存贮过程:按条件查询字段。
只看楼主 加入收藏
jonvahe
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-27
收藏
 问题点数:0 回复次数:11 
求sqlserver存贮过程:按条件查询字段。

表1:id,工号,姓名,性别
表2:id,字段名,显示标志
表2的"字段名"的内容为表1的字段名:id,工号,姓名,性别; "显示标志"为: 0显示,-1不显示。
要求根据表2"字段名"与"显示标志"的相关条件,查询显示表1的记录。
如:
表1
id 工号 姓名 性别
1 a01 a 男
2 a02 b 男
3 a03 c 男
4 a04 d 男
表2
id 字段名 显示标志
1 id -1
2 工号 0
3 姓名 0
4 性别 -1
则查询结果为:
工号 姓名
a01 a
a02 b
a03 c
a04 d

[此贴子已经被作者于2007-10-27 9:21:33编辑过]

搜索更多相关主题的帖子: 字段 sqlserver 存贮 条件 查询 
2007-10-27 09:20
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 

declare @a varchar(100)
set @a=''
select @a=@a+字段名 from table2 where 显示标志='0'

exec ('select '+@a+' from table1')
没有测试不知道正确吧 思路是这样的

2007-10-27 10:07
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 

漏了一句

if @a<>''
begin
set @a=left(@a,len(@a)-1)
end


declare @a varchar(100)
set @a=''
select @a=@a+字段名 from table2 where 显示标志='0'
if @a<>''
begin
set @a=left(@a,len(@a)-1)
end
exec ('select '+@a+' from table1')

2007-10-27 10:18
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 

把我写的例子一起贴出来看看吧

create table ceshi1(id int,name varchar(10),pass varchar(10))
go
create table ceshi2(id int identity(1,1),columns1 varchar(10),B varchar(1))
go

insert into ceshi1 select 1,'a','a' union select 2,'b','b'
insert into ceshi2 select 'id','1' union select 'name','0' union select 'pass','0'

select * from ceshi1
select * from ceshi2

declare @a varchar(100)
set @a=''
select @a=@a+columns1+',' from ceshi2 where b='0'

if @a<>''
begin
set @a=left(@a,len(@a)-1)
end
exec ('select '+@a+' from ceshi1')

2007-10-27 10:24
jonvahe
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-27
收藏
得分:0 
谢谢.
2007-10-27 13:38
pipifei199
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-10-28
收藏
得分:0 
大家一起分享成果,共同进步!

我是新手,请各位大侠多多赐教!呵呵
2007-10-28 11:51
jonvahe
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-27
收藏
得分:0 

将此存贮过程查询出来的字段及内容生成为表3,如表3已存在,先删除.能行不?

2007-10-29 09:44
jonvahe
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-27
收藏
得分:0 
顶一下.
2007-10-29 13:33
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 
以下是引用jonvahe在2007-10-29 9:44:29的发言:

将此存贮过程查询出来的字段及内容生成为表3,如表3已存在,先删除.能行不?

最后一句改成:
exec ('if object_id(''表3'') is not null drop table 表3 select name,pass into 表3 from ceshi1')

2007-10-30 16:53
jonvahe
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-27
收藏
得分:0 

好象没达到要求.

2007-10-31 13:33
快速回复:求sqlserver存贮过程:按条件查询字段。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016948 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved