sql 增加一列同一列的比值

2013年3月 总版技术专家分月排行榜第三
2014年5月 移动开发大版内专家分月排行榜第一2014年4月 移动开发大版内专家分月排行榜第一
2016年10月优秀大版主2016年8月论坛优秀版主2015年4月优秀版主2014年11月论坛优秀版主
2016年4月 荣获微软MVP称号2015年4月 荣获微软MVP称号2014年4月 荣获微软MVP称号2013年4月 荣获微软MVP称号2009年1月 荣获微软MVP称号2012年4月 荣获微软MVP称号2011年4月 荣获微软MVP称号2010年4月 荣获微软MVP称号
2016年10月优秀大版主2016年8月论坛优秀版主2015年4月优秀版主2014年11月论坛优秀版主
2016年4月 荣获微软MVP称号2015年4月 荣获微软MVP称号2014年4月 荣获微软MVP称号2013年4月 荣获微软MVP称号2009年1月 荣获微软MVP称号2012年4月 荣获微软MVP称号2011年4月 荣获微软MVP称号2010年4月 荣获微软MVP称号
2016年10月优秀大版主2016年8月论坛优秀版主2015年4月优秀版主2014年11月论坛优秀版主
2016年4月 荣获微软MVP称号2015年4月 荣获微软MVP称号2014年4月 荣获微软MVP称号2013年4月 荣获微软MVP称号2009年1月 荣获微软MVP称号2012年4月 荣获微软MVP称号2011年4月 荣获微软MVP称号2010年4月 荣获微软MVP称号
本帖子已过去太久远了,不再提供回复功能。sql语句问题怎么在同一张表某一列做加减,如图所示,需要统计进出数量和剩余量
笑看浮华w美
select GoodName as 物品,sum(Qty) as 进货数量 from GoodDtl where Cls = '进' group by GoodN
--tab1select GoodName as 物品,sum(Qty) as 出货数量 from GoodDtl where Cls = '出' group by GoodN--tab2select 物品,tab1. 进货数量,tab2.出货数量,tab1. 进货数量-tab2.出货数量 as 当前库存from(select GoodName as 物品,sum(Qty) as 进货数量 from GoodDtl where Cls = '进' group by GoodName) tab1,(select GoodName as 物品,sum(Qty) as 出货数量 from GoodDtl where Cls = '出' group by GoodName) tab2where tab1.物品 = tab2.物品;
为您推荐:
扫描下载二维码1985人阅读
SQLServer(4)
&&& 刚才从论坛上面看到一个帖子,我之前也碰到过这一类问题,所以记下来,算学习到新的东西。从回答者给出的不同的代码,也从另一个侧面看到了这个问题的多种思维解决方案。还是有不少东西可以学得到的。
&&& 学习到的内容:stuff函数的应用
& 有一个用户表(姓名,编号,爱好)& user(name,id,hobby),里面的数据有:& 张三 001 篮球& 张三 001 电影& 李四 002 足球& 王五 003 上网& 李四 002 看美女现在要求写一SQL语句,使查出结果为:& 张三 001 篮球,电影& 李四 002 足球,看美女& 王五 003 上网
解决方案:
IF OBJECT_ID('USER') IS NOT NULL DROP TABLE [USER]
CREATE TABLE [USER](
NAME VARCHAR(10)
,ID VARCHAR(5)
,HOBBY VARCHAR(10)
INSERT INTO [USER]
SELECT '张三','001','篮球' UNION ALL
SELECT '张三','001','电影' UNION ALL
SELECT '李四','002','足球' UNION ALL
SELECT '王五','003','上网' UNION ALL
SELECT '李四','002','看美女'
SELECT NAME,ID
,STUFF((SELECT ','+HOBBY FROM [USER] T2 WHERE T2.NAME=T1.NAME FOR XML PATH('')),1,1,'')
FROM [USER] T1
GROUP BY NAME,ID
---------- ----- ---------------
足球,看美女
方案二:SQL code
--1. 创建处理函数
create table tb(name varchar(10),ID int,hobby varchar(20))
insert into tb
select '张三','001','篮球'
select '张三','001','电影'
select '李四','002','足球'
select '王五','003','上网'
select '李四','002','看美女'
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + hobby FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
-- 调用函数
SELECt name, hobby = dbo.f_str(id) FROM tb GROUP BY name,id
drop table tb
drop function dbo.f_str
(所影响的行数为 5 行)
足球,看美女
(所影响的行数为 3 行)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:231755次
积分:4043
积分:4043
排名:第6019名
原创:169篇
转载:41篇
评论:48条
(1)(1)(1)(1)(1)(1)(1)(4)(5)(4)(4)(7)(4)(1)(6)(4)(2)(8)(2)(6)(4)(9)(7)(24)(16)(6)(1)(2)(5)(8)(3)(6)(10)(9)(2)(2)(2)(7)(5)(2)(13)(4)sql&关于同一列不同值的个数统计
看一下操作就能明白
mysql& select *
+------+------+
+------+------+
+------+------+
6 rows in set (0.00 sec)
mysql& select count(case b when 1 then null when 2 then 2
end) "b=2",count(case b when 2 then null when 1 then 1 end) "b=1"
+-----+-----+
| b=2 | b=1 |
+-----+-----+
+-----+-----+
1 row in set (0.00 sec)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 sql 增加一列 的文章

 

随机推荐