当前位置: 代码迷 >> Sql Server >> 求 计数 与 现实数量 不一样
  详细解决方案

求 计数 与 现实数量 不一样

热度:410   发布时间:2016-04-27 11:27:20.0
求 计数 与 实际数量 不一样
有一货品总览表 A

SQL code
货品名称 还剩数量洗衣粉   10面包     5

……

还有一个 每个物品一条记录的表 B

SQL code
物品编号 还在 货品名称001      1    洗衣粉002      1    面包003      0    洗衣粉


"还在"这个列,值=1的话,说明该物品还,值为0表示物品已经不存在。

A表"货品名称"就是主键,想查所有物品还剩多少,是

select * from A

B表物品编号是主键,想查每样物品还有多少是

select count(物品编号) from B where 还在=1 group by 货品名称


现在,想让两种查询物品数量的结果显示在一起,因为可能由误操作导致两种记录结果不一样,想看一下。

select A.货品名称, B.货品名称,A.还剩数量 from A left join B on a.货品名称=b.货品名称

结果是

SQL code
货品名称 货品名称 还剩数量洗衣粉   洗衣粉     10面包     面包        5蚊香     NULL        0

。。。

蚊香这个货品在B表里没有记录,所以查出来货品名称是NULL。还想加一列count(物品编号,但group by和"还在"=1
不知道怎么写,加在哪

------解决方案--------------------
你不是都写出来了吗

select A.货品名称, B.货品名称,A.还剩数量 from A left join B on a.货品名称=b.货品名称

作为一个表,和表A链接
------解决方案--------------------
SQL code
select A.货品名称, B.货品名称,A.还剩数量,t.还在数量 from A left join (    select count(物品编号) 还在数量,货品名称 from B where 还在=1 group by 货品名称) ton A.货品名称=t.货品名称
------解决方案--------------------
SQL code
with  T as(    select count(物品编号) 还在数量,货品名称 from B where 还在=1 group by 货品名称)select A.货品名称, B.货品名称,A.还剩数量,t.还在数量 from A left join T on A.货品名称=t.货品名称
  相关解决方案