导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

一个特殊的sql语句?有关于sum与case的用法

axiang_2898 2008-01-02 03:09:12

select a.ma_name, a.materiel_code,sum(a.number) as kc_number,safe_stock=(case b.safe_stock when b.safe_stock then b.safe_stock else (select safe_stock=case e.safe_stock when e.safe_stock then e.safe_stock else 0 end from all_materiel e where e.code=a.materiel_code) end) from kc_stock a,kc_materiel b where a.materiel_code=b.materiel_code and a.data_area=b.data_are group by a.materiel_code,a.ma_name,b.safe_stock


我可以得到如下的列表:
a 001 100 50
b 002 50 80
c 003 200 100
我想是不是有如下的写法:
a 001 100 50 安全库存
b 002 50 80 库存不够
c 003 200 100 安全库存
也就是我想比较sum(a.number)与b.safe_stock的数量,如果sum(a.number)>b.safe_stock显示安全库存,反之显示库存不够!请问这个如何来写啊?请朋友们帮助!谢谢!
...全文
428 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
popeye627 2008-01-02
try:

select t.* ,
库存 = case when t.number>=t.safe_stock then '安全庫存' else '庫存不夠 ' end
from (
select 'a' as ma_name, 001 as kc_number, 100 as number , 50 as safe_stock
union
select 'b', 002 , 50 , 80
union
select 'c',003 , 200 , 100
) t


ma_name kc_number number safe_stock 库存
------- ----------- ----------- ----------- ---------
a 1 100 50 安全庫存
b 2 50 80 庫存不夠
c 3 200 100 安全庫存

(3 個資料列受到影響)
回复
jackyerror 2008-01-02
select
a.ma_name,
a.materiel_code,
sum(a.number) as kc_number,
coalesce(b.safe_stock, e.safe_stock, 0) cal_safe_stock,
case when kc_number > cal_safe_stock then '安全库存' else '库存不够' end kc_status
from kc_stock a,kc_materiel b, all_materiel e
where a.materiel_code=b.materiel_code
and a.data_area=b.data_are
and e.code=a.materiel_code
group by a.materiel_code,a.ma_name,b.safe_stock
回复
WhyAndAnswer 2008-01-02
select a....,d=case when (a.sumnumber)> b.safe_stock then '安全库存' else '库存不够' end
from
(
select ...
) a
回复
wzy_love_sly 2008-01-02
declare @tb table(库存 int,出库 int)
insert into @tb select 5,4
insert into @tb select 6,7
insert into @tb select 7,7

select *,case
when 库存>出库 then '库存足够'
when 库存<出库 then '库存不够'
else '库存为0' end as 库存
from @tb

库存 出库 库存
5 4 库存足够
6 7 库存不够
7 7 库存为0
回复
WhyAndAnswer 2008-01-02
外面再套一层select就行了,这个当作子查询
回复
wzy_love_sly 2008-01-02
select
case when sum(a.number)> b.safe_stock then '安全库存' else '库存不够' end as 库存,
列名,列名 from 表。。。。。。
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告