表zbzk
字段 qybm ssn ssy zysr zycb zysrbd zycbbd ....
记录1 812201 2005 10 正常 异常 正常 异常 ....
表zbfz
字段 id name1 name2
记录1 1 主营收入 zysr
记录2 2 主营成本 zycb
记录3 3 主营收入变动 zysrbd
记录4 4 主营成本变动 zycbbd表1中字段名称与表2中name2值对应,表2中name1值为name2值的中文名称。请问高手们我怎样才能显示出表zbzk中字段值为异常的字段所对应的表zbfz的name1字段中的中文名称?
字段 qybm ssn ssy zysr zycb zysrbd zycbbd ....
记录1 812201 2005 10 正常 异常 正常 异常 ....
表zbfz
字段 id name1 name2
记录1 1 主营收入 zysr
记录2 2 主营成本 zycb
记录3 3 主营收入变动 zysrbd
记录4 4 主营成本变动 zycbbd表1中字段名称与表2中name2值对应,表2中name1值为name2值的中文名称。请问高手们我怎样才能显示出表zbzk中字段值为异常的字段所对应的表zbfz的name1字段中的中文名称?
解决方案 »
- 拒绝了对对象 'FriendLink' (数据库 'SY_Spin',架构 'dbo')的 INSERT 权限
- 请教一个批量修改SQL数据库的SQL语句
- asp.net 2.0中 多栏式页面是如何做的
- 回答马上给分!httpModule在web.config里设置问题
- 急急!超级TreeView问题?讨论有分!!!!
- 如何转入另一页面
- sqlserver reports画饼图的问题(急)
- 如何在程序的点击事件中弹出对话筐让用户选择?
- datagrid的问题
- 请问怎样让datalist中符合条件的单元变色?
- 用什么语句判断checkbox 已经被选中呢
- ===我建了一个群15686350欢迎83年的程序员们必加啊,热烈欢迎前辈们也加入===
然后拼SQL语句
string strSql ="select ";
for(int i = 0; i < dt.Rows.Count; i ++)
{
if(i == dt.Rows.Count - 1)
strSql=strSql+dt.Rows[i]["name2"].ToString()+",";
else
strSql=strSql+dt.Rows[i]["name2"].ToString()+",";
}strSql = strSql +" from zbzk";
for(int i = 0; i < dt.Rows.Count; i ++)
{
if(i == dt.Rows.Count - 1)
strSql=strSql+dt.Rows[i]["name2"].ToString();
else
strSql=strSql+dt.Rows[i]["name2"].ToString()+",";
}
Create Table zbzk (qybm varchar(10),ssn varchar(10),ssy varchar(10),zysr varchar(10),zycb varchar(10),zysrbd varchar(10),zycbbd varchar(10))
--插入数据
insert into zbzk
select '812201','2005','10','正常','异常','正常','异常'Create Table zbfz(字段 varchar(100),id varchar(100),name1 varchar(100),name2 varchar(100))
--插入数据
insert into zbfz
select '记录1','1','主营收入','zysr' union
select '记录2','2','主营成本','zycb' union
select '记录3','3','主营收入变动','zysrbd' union
select '记录4','4','主营成本变动','zycbbd'
--select * from zbzk
--select * from zbfz
--测试语句
select b.*,b.name2 from
(
select qybm,ssn,ssy,name1=zysr ,name2 ='zysr' from zbzk union
select qybm,ssn,ssy,zycb,name2 ='zycb' from zbzk union
select qybm,ssn,ssy,zysrbd,name2 ='zysrbd' from zbzk union
select qybm,ssn,ssy,zycbbd,name2 ='zycbbd' from zbzk
)a,zbfz b
where a.name2=b.name2 and a.name1='异常'
--删除测试环境
Drop Table zbzk
Drop Table zbfz
/*--
记录2 2 主营成本 zycb zycb
记录4 4 主营成本变动 zycbbd zycbbd--*/
字段 qybm ssn ssy zysr zycb zysrbd zycbbd ....
记录1 812201 2005 10 正常 异常 正常 异常 ....
表zbfz
字段 id name1 name2
记录1 1 主营收入 zysr
请问高手们我怎样才能显示出表zbzk中字段值为异常的字段所对应的表zbfz的name1字段中的中文名
*************************************************
函数:
CREATE FUNCTION dbo.getName (@name2 varchar(30))
RETURNS varchar(50) AS
BEGIN
DECLARE @Name varchar(50)
if @name2='zysr'
begin
select @Name=zysr from zbzk where zysr='异常'
if len(@Name)>0
begin
select @Name=name1 from zbzk where name2='zysr'
end
end
if @name2='zycb'
begin
select @Name=zycb from zbzk where zycb='异常'
if len(@Name)>0
begin
select @Name=name1 from zbzk where name2='zycb'
end
end
if @name2='zysrbd'
begin
select @Name=zysrbd from zbzk where zysrbd='异常'
if len(@Name)>0
begin
select @Name=name1 from zbzk where name2='zysrbd'
end
end
if @name2='zycbbd'
begin
select @Name=zycbbd from zbzk where zycbbd='异常'
if len(@Name)>0
begin
select @Name=name1 from zbzk where name2='zycbbd'
end
end
RETURN @Name
END
----sql语句
select dbo.getName(name2)) as name1 from zbfz
没有测试,你可以试一下
个人愚见,不知道对不对?
//zbzk的记录已经存在DataSet ds中.
string name2;
for(int i=0;i<ds.Table[0].Columns.Count;i++)
{
if(ds.Table[0].Rows[0][i].Tostring() == "异常")
{
name2 += ds.Table[0].Columns[i].ColumnName+",";
}
}
string sql = "select name1 from zbfz where name2 in ";
name2 = name2.Remove(name2.Length-1,1);
name2 = "("+name2+")";
sql = sql + name2;
//用sql执行查询就可以了,肯定没错!!
我是新手,谢谢!
运行后系统提示 select dbo.getName(name2)) as name1 from zbfz中select 错误。
请问是怎样回事?