SQL: 一句sql语句查询表中A、B产品的剩余数量
本帖最后由 Yip 于 2014-9-15 11:35 编辑题目:
数据库中有表TI,表示仓库中有产品若干,MC是产品名称,ZT表示状态,IN表示入库,OUT表示出库,SL是数量;
请用一句SQL语句,显示产品A、B的剩余数量。
-------------------------
|MC |ZT |SL |
------------------------
|A |IN |200|
------------------------
|B |IN |100|
------------------------
|A |OUT |20 |
------------------------
·
·省略其他行
·
小弟SQL基础没打好,请各位大神不吝赐教,谢谢~
=================================
看到大家的评论回答,很感激;
不过题干有几点可能大家没注意到,
第一、求A、B的剩余数量,即 IN的数量减去OUT的数量;
第二、上面表T1只是前3行数据,后面省略了其他记录,也就是表里面还有可能C、D··等等的产品;
所以,理想的结果应该是这样的:
|MC(名称)|RESULT(剩余)|
|A |A的剩余数量 |
|B |B的剩余数量 |
只是目前还写不出一句SQL可以满足以上需求(用MySQL更好^_^),恳请各位大大帮忙,谢谢~
本帖最后由 xjmroot 于 2014-9-15 10:07 编辑
给你参考参考
select A.MC,totalin-if(isnull(totalout),0,totalout) as totalout from (select MC,sum(SL) as totalin from TI where ZT='IN' group by MC) as A left join (select MC,sum(SL) as totalout from TI where ZT='OUT' group by MC) as B on A.MC=B.MC;
mysql> select A.MC,if(isnull(totalin),0,totalin) as totalin,if(isnull(totalout),0,totalout) as totalout from (select MC,sum(SL) as totalin from TI where ZT='IN' group by MC) as A left join (select MC,sum(SL) as totalout from TI where ZT='OUT' group by MC) as B on A.MC=B.MC;
+----+---------+----------+
| MC | totalin | totalout |
+----+---------+----------+
| A| 200 | 20 |
| B| 100 | 0 |
+----+---------+----------+
2 rows in set
mysql>
Closer 发表于 2014-9-15 09:54
抱歉抱歉~
沒注意到還有OUT那行
select A.MC,totalin-if(isnull(totalout),0,totalout) as totalout from (select MC,sum(SL) as totalin from TI where ZT='IN' group by MC) as A left join (select MC,sum(SL) as totalout from TI where ZT='OUT' group by MC) as B on A.MC=B.MC;
这个可以的,应该还有简单的。再想想
本帖最后由 Closer 于 2014-9-15 10:28 编辑
xjmroot 发表于 2014-9-15 10:04
select A.MC,totalin-if(isnull(totalout),0,totalout) as totalout from (select MC,sum(SL) as totalin...
受到你的啟發,所以去找了一下,可以利用SUM和GROUP BY
SELECT MC, SUM(SL) AS SL FROM `TI` GROUP BY MC
這個語法的前提是,OUT項的值要改成負數
也就是 -20 ,這樣可以讓語法精簡很多
基礎要打好,沒基礎,任何人都可以取代你
MySQL 超新手入門(3)SELECT 基礎查詢
select MC, SL from `TI` where MC='A' or MC='B'
語法應該是這樣
xjmroot 发表于 2014-9-15 09:40
这咋显示、总量都不知道
抱歉抱歉~
沒注意到還有OUT那行
樓主這個需求我還真弄不出來...
关注 沦陷今生 发表于 2014-9-15 09:58
关注
论坛蛮活跃的吗。。。我咋听说CI框架要过时了。是真的吗
你的OUT值為什麼不在建立前先 * (-1)
這樣語法就很簡單了阿
Closer 发表于 2014-9-15 11:51
你的OUT值為什麼不在建立前先 * (-1)
這樣語法就很簡單了阿
这只是一道试题{:soso_e100:}
页:
[1]
2