select count(*) cnt
from 
(
select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq, 
m1.ssfl,  n1.smc   as bt from  cxlyb m1,dgsp a1,ecoupons n1  
where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,ecoupons n where  m.ssdx=n.iyhqbs  ) 
and (m1.ssdx=n1.iyhqbs) 
UNION 
select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq, 
m1.ssfl,  a1.dgbt   as bt from  cxlyb m1,dgsp a1,ecoupons n1  
where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,dgsp a where  m.ssdx=a.dgbs  ) 
and (m1.ssdx=a1.dgbs) 
union 
select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq, 
m1.ssfl,  b1.tgbt   as bt from  cxlyb m1,tgsp b1,ecoupons n1  
where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,tgsp b where  m.ssdx=b.tgbs  ) 
and (m1.ssdx=b1.tgbs) 
) t

解决方案 »

  1.   


    select count(*) as 总数 from (select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq,
    m1.ssfl,  n1.smc   as bt from  cxlyb m1,dgsp a1,ecoupons n1 
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,ecoupons n where  m.ssdx=n.iyhqbs  )
    and (m1.ssdx=n1.iyhqbs)
    UNION
    select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq,
    m1.ssfl,  a1.dgbt   as bt from  cxlyb m1,dgsp a1,ecoupons n1 
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,dgsp a where  m.ssdx=a.dgbs  )
    and (m1.ssdx=a1.dgbs)
    union
    select   distinct   m1.lybs,m1.ssdx,m1.yhbs,m1.yhm,convert(varchar(50),m1.lyrq,121) as lyrq,
    m1.ssfl,  b1.tgbt   as bt from  cxlyb m1,tgsp b1,ecoupons n1 
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,tgsp b where  m.ssdx=b.tgbs  )
    and (m1.ssdx=b1.tgbs)) t
      

  2.   

    union all  连接以后 就是一个表机构 你可以直接用SQL语句从连接后的语句中查询就可以了 或者 不用union all  连接  求总数可以单个表求  再求和
      

  3.   


    select count(*)
    from
    (
    select   distinct  m1.lybs,
    m1.ssdx,
    m1.yhbs,
    m1.yhm,
    convert(varchar(50),
    m1.lyrq,121) as lyrq, 
    m1.ssfl,
    n1.smc   as bt ]
    from  cxlyb m1,dgsp a1,ecoupons n1  
    where   m1.lybs in(select distinct  m.lybs  from  cxlyb m,ecoupons n where  m.ssdx=n.iyhqbs  ) 
    and (m1.ssdx=n1.iyhqbs) 
    UNION 
    select   distinct  m1.lybs,
    m1.ssdx,
    m1.yhbs,
    m1.yhm,
    convert(varchar(50),
    m1.lyrq,121) as lyrq, 
    m1.ssfl,  
    a1.dgbt   as bt 
    from   cxlyb m1,dgsp a1,ecoupons n1  
    where   m1.lybs in(select distinct  m.lybs  from  cxlyb m,dgsp a where  m.ssdx=a.dgbs  ) 
    and (m1.ssdx=a1.dgbs) 
    union 
    select   distinct  m1.lybs,
    m1.ssdx,
    m1.yhbs,
    m1.yhm,
    convert(varchar(50),m1.lyrq,121) as lyrq, 
    m1.ssfl,  
    b1.tgbt   as bt 
    from   cxlyb m1,tgsp b1,ecoupons n1  
    where   m1.lybs in(select distinct  m.lybs  from  cxlyb m,tgsp b where  m.ssdx=b.tgbs  ) 
    and (m1.ssdx=b1.tgbs) 
    ) as TB
      

  4.   

    在外面的话,可以直接从数据集中得到,如果是数据库。再写一套。select cast((( select count(*) from  cxlyb m1,dgsp a1,ecoupons n1  
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,ecoupons n where  m.ssdx=n.iyhqbs  ) 
    and (m1.ssdx=n1.iyhqbs)) + (select count(*) from  cxlyb m1,dgsp a1,ecoupons n1  
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,dgsp a where  m.ssdx=a.dgbs  ) 
    and (m1.ssdx=a1.dgbs)) + (select count(*) from  cxlyb m1,tgsp b1,ecoupons n1  
    where  m1.lybs in(select distinct  m.lybs  from  cxlyb m,tgsp b where  m.ssdx=b.tgbs  ) 
    and (m1.ssdx=b1.tgbs))) as varchar) + '条记录'