SELECT A.ID, 
       A.VID, 
       A.Vdata, 
       [State]=case when exists(select 1 from B C where C.Vid=B.Vid and C.State='false')
                    then 'false'
                    else 'true'
               end 
FROM A 
INNER JOIN B ON A.VID = B.VID

解决方案 »

  1.   

    请问这句是什么意思呀
    (select 1 from B C where C.Vid=B.Vid and C.State='false')“select 1” ??
      

  2.   

    其实"select 1"或"select 2"……都可以主要是前面的exists是存在的意思。
      

  3.   

    要不这样
    SELECT A.ID, 
           A.VID, 
           A.Vdata,case b.State when true then 'True' else 'false' end as State
    from A left join B on a.VID = B.VID
      

  4.   

    不行呀,请问Access里没有exists() 该怎么写啊?
    我用了IIf()函数也不行
      

  5.   

    access好久没用过了.
    上面我写的不行
    你试试这个:SELECT A.ID, 
           A.VID, 
           A.Vdata,IIF(b.State,'True','false') as State from A left join B on a.VID = B.VID
      

  6.   

    SELECT A.ID, 
           A.VID, 
           A.Vdata,
           IIf(B.State=true,true,false) as stat
    from A left join B on a.VID = B.VID
    这样还行,不过数据凭空多出了两行,怪了
      

  7.   

    找到问题所在了,B.VID 有n个重复,数据就会多出n行
    (在多个重复的B.VID中只有一个是TRUE)tangqijun199(撒旦) 还有法子吗,结贴时我给你加到100分,谢谢
      

  8.   

    IIF()里能不能用Where呀,要是可以就好办了