select * from ZBMdata where BaoMingNum=(select BaoMingNum from ZBMrmb where KMnum=(select KMnum from KM where KMnum=km01))
不知道可不可以...试试吧,子查询....

解决方案 »

  1.   

    最基本的交叉表查詢啊!
    select ZBMdata.baomingNum,ZBMdata.姓名,ZBMdata.性别,KM.科目名称,KM.费用,ZBMrmb.考核日期 
    from  ZBMdata inner join ZBMrmb on ZBMdata.baomingNum=ZBMrmb.baomingNum  inner join KM  on ZBMrmb.Kmnum=KM.Kmnum
      

  2.   

    得杂查询我都是这样做的:在ACCESS里用向导按要求做好,用其生成的SQL语句。试试吧!
      

  3.   

    这样的查询用MSSQLServer就很容易实现了,Access好像不可以,应为不能执行动态语句
      

  4.   

    select b.* ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM01') 
    ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM02')
    from (select BaoMingNum,考核日期 from ZBMrmb group by 考核日期,BaoMingNum) as b先写一半
      

  5.   

    写完了,楼主记得给分啊select ZBMdata.BaoMingNum,ZBMdata.姓名,ZBMdata.性别, case when d.办公自动化 ='KM01' then 80 else 0 end as 办公自动化,
    case when d.多媒体技术 ='KM02' then 100 else 0 end as 多媒体技术,d.考核日期
    from ZBMdata,
    (select b.* ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM01') as 办公自动化
    ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM02') as  多媒体技术
    from (select BaoMingNum,考核日期 from ZBMrmb group by 考核日期,BaoMingNum) as b) as d
    where d.BaoMingNum=ZBMdata.BaoMingNum
      

  6.   

    aiur2000(下一站.NET) 谢谢您!你给出的代码, 我贴在程序中还是不能通过。。能否帮我看一下程序的代码!  非常感谢!  告诉我你的邮箱我发给你!!!
    或将你通过的代码发到 
      

  7.   

    不是不会用access数据库是在VB 中执行的查询(select)  用ADO连接的数据库
      

  8.   

    参考SQL中关于交叉表查询的例子
      

  9.   

    先用ACCESS的查询设计器设计这个查询,如果在ACCESS下调试能成功的话,放在VB中应该没问题的了
      

  10.   

    下一站天后,他的SQL是在SQL SERVER中写的.所以ACCESS通不过.
    Access要将Case When改成IIF
      

  11.   

    以下是access版的
    access里sql数据查询最后带分号的,vb里就可以去掉了
    但where那里出了点问题,我再看看SELECT ZBMdata.BaoMingNum, ZBMdata.姓名, ZBMdata.性别, IIf(d.办公自动化 ='KM01', "80", "0") AS 办公自动化, IIf(d.多媒体技术 ='KM02', "100", "0") AS 多媒体技术, d.考核日期
    FROM ZBMdata, [select b.* ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM01') as 办公自动化
    ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM02') as  多媒体技术
    from (select BaoMingNum,考核日期 from ZBMrmb group by 考核日期,BaoMingNum) as b]. AS d
    WHERE d.BaoMingNum=ZBMdata.BaoMingNum;
      

  12.   

    去掉where,前面加上d.BaoMingNum时,可以看出数据正确
    d.BaoMingNum,ZBMdata.BaoMingNum这两列冗余,可以看出
    d.BaoMingNum=ZBMdata.BaoMingNum时是正确的结果,但是加上where后结果就不对了。
    原因不明。SELECT d.BaoMingNum,ZBMdata.BaoMingNum, ZBMdata.姓名, ZBMdata.性别, IIf(d.办公自动化 ='KM01', "80", "0") AS 办公自动化, IIf(d.多媒体技术 ='KM02', "100", "0") AS 多媒体技术, d.考核日期
    FROM ZBMdata, [select b.* ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM01') as 办公自动化
    ,(select top 1 KMnum from (select * from ZBMrmb) as c where b.baomingnum=c.baomingnum and b.考核日期=c.考核日期 and c.KMnum='KM02') as  多媒体技术
    from (select BaoMingNum,考核日期 from ZBMrmb group by 考核日期,BaoMingNum) as b]. AS d;
      

  13.   

    aiur2000(下一站.NET) 谢谢您!