表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字段中的中文名称?

解决方案 »

  1.   

    将表zbfz中数据先读入一个DataTable dt=new DataTable()中
    然后拼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";
      

  2.   

    上面循环中写错了
    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()+",";
    }
      

  3.   

    --建立测试环境
    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--*/
      

  4.   

    表zbzk 
    字段      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
    没有测试,你可以试一下
      

  5.   

    我认为应该是通过ds.Tables[0].Columns[0].ColumnName.ToString()先取出表zbzk中字段值异常的列名,然后再从表zbfz中查找它的中文名。
    个人愚见,不知道对不对?
      

  6.   

    //zbzk应该只有一行吧!
    //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执行查询就可以了,肯定没错!!
      

  7.   

    请问 jinjazz(近身剪(充电中...)) 代码中 a,b分别代表什么?
    我是新手,谢谢!
      

  8.   

    请问  bitliuyang(昊天) 
    运行后系统提示 select dbo.getName(name2)) as name1 from zbfz中select 错误。
    请问是怎样回事?