日期:2014-05-19  浏览次数:20408 次

求一条很简单的SQL语句,高手帮帮忙急
A表
店号     店名             注册日期             注册卷数     注册数字
1111     1店             2007-01-01               60             21000
1112     2店             2007-03-02               30             10500

B表
店号     店名             发放日期
1111     1店             2007-02-08
1111     1店             2007-01-09
1111     1店             2006-08-09
1112     2店             2007-03-02
1113     3店             2007-03-08

查询出的格式
店号     店名     注册日期     注册数字     计数器       差额
1111     1店     2007-01-01     21000             2           20998
1112     2店     2007-03-02     10500             1           10499

我的语句如下
select   max(printpapercount.shopid)   as   shopid,max(printpapercount.shopname)   as   shopname,
max(printpapercount.regpaperdate)   as   regpaperdate,max(printpapercount.regpapercount2)   as   regpapercount2,
count(*)   as   printpapercount
from   printpapercount,ticketinfo  
where   printpapercount.shopid=ticketinfo.shopid   and   ticketinfo.providedate> printpapercount.regpaperdate
and   ticketinfo.providedate <CONVERT(datetime,left(getdate()-1,10)+ '   23:59:59.000 ')
group   by   printpapercount.shopid

不加这个日期条件的话   A表有几条记录就显示几条记录   如果加了日期条件的话怎么都显示一条记录

最终目的
就是说A表是个   登记统计时间和数字的     B表是个发放记录表的   我要达到的是B表根据A表登记的时间做为条件count(*)   然后显示出来就可以了

谢谢高手帮我改下好吗?

------解决方案--------------------
select 店号,
店名,
注册日期,
注册数字,
(select count(*) from B表 where B表.店号=A表.店号 and B表.发放日期> =A表.发放日期) as 计数器,
注册数字 - (select count(*) from B表 where B表.店号=A表.店号 and B表.发放日期> =A表.发放日期) as 差额
from A表
------解决方案--------------------
--建議將Count(*)改為Count(店号)
select 店号,
店名,
注册日期,
注册数字,
(select count(店号) from B表 where B表.店号=A表.店号 and B表.发放日期> =A表.发放日期) as 计数器,
注册数字 - (select count(店号) from B表 where B表.店号=A表.店号 and B表.发放日期> =A表.发放日期) as 差额
from A表