首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一下这个sql如何写 顶者皆有分 多谢各位了

2012-02-22 
请教一下这个sql怎么写 顶者皆有分 谢谢各位了有一个表列为id(标识自增)产品名称数量规格状态(0为进货1为

请教一下这个sql怎么写 顶者皆有分 谢谢各位了
有一个表   列为
id(标识自增)产品名称   数量   规格   状态(0为进货   1为出货)日期           客户编号
数据如  
1                           恰恰瓜子   100     500克     0                                       2006-11-4       23
2                           娃哈哈酸奶300   100克     0                                       2006-12-3       11
3                           恰恰瓜子   80       500克     1                                       2006-11-4       4
4                           娃哈哈酸奶100   100克     1                                       2006-12-3       5

我现在想要实现的功能是   计算当前的库存产品数量。
就是   同名称同规格的产品进货总量-出货总量

输出结果
产品名称         数量           规格
恰恰瓜子           20           500克
娃哈哈酸奶       200         100克                  


[解决办法]
Select
产品名称,
SUM(Case 状态 When 0 Then + 数量 Else - 数量 End) As 数量,
规格
From TableName
Group By 产品名称, 规格
[解决办法]
沙發
[解决办法]
暈,想先頂後看的,被搶了..
[解决办法]
select 产品名称,sum(case when 状态=0 then 数量*-1 else 数量 end) as 数量, 规格
from tablename
group by 产品名称
[解决办法]
-SORRY,先反了
select 产品名称,sum(case when 状态=0 then 数量 else 数量*-1 end) as 数量, 规格
from tablename
group by 产品名称
[解决办法]
Create Table TEST
(idInt Identity(1, 1),
产品名称Nvarchar(50),
数量Int,
规格Nvarchar(20),
状态Bit,
日期DateTime,
客户编号Int)
Insert TEST Select N '恰恰瓜子 ', 100, N '500克 ', 0, '2006-11-4 ', 23
Union All Select N '娃哈哈酸奶 ', 300, N '100克 ', 0, '2006-12-3 ', 11
Union All Select N '恰恰瓜子 ', 80, N '500克 ', 1, '2006-11-4 ', 4
Union All Select N '娃哈哈酸奶 ',100, N '100克 ', 1, '2006-12-3 ', 5
GO
Select
产品名称,
SUM(Case 状态 When 0 Then + 数量 Else - 数量 End) As 数量,
规格
From TEST
Group By 产品名称, 规格
GO
Drop Table TEST
--Result
/*
产品名称数量规格
娃哈哈酸奶200100克
恰恰瓜子20500克
*/
[解决办法]
怪事了,一看到Case when 就不爽, 总想找别的代替,哪怕更麻烦效率更差



Select
产品名称,
SUM((0.5-状态) * 2 * 数量) As 数量,
规格
From TableName
Group By 产品名称, 规格

[解决办法]
select 产品名称,数量=sum(case when 状态=0 then 数量 else -数量 end),规格 from 表
group by 产品名称,规格
order by 产品名称
[解决办法]
需要女人的开导...
[解决办法]
Select
产品名称,
SUM(Case 状态 When 0 Then + 数量 Else - 数量 End) As 数量,
规格
From TableName
Group By 产品名称, 规格
[解决办法]



create table t_tbl(id int identity(1,1),产品名称 varchar(50),数量 int,规格 varchar(10) ,zhuangtai bit,date_time smalldatetime,cust_num int )


insert t_tbl (产品名称,数量,规格,zhuangtai,date_time,cust_num)
select
'恰恰瓜子 ', 100, '500克 ', 0, '2006-11-4 ',23
union all select
'娃哈哈酸奶 ',300, '100克 ', 0 , '2006-12-3 ',11
union all select
'恰恰瓜子 ' ,80, '500克 ', 1, '2006-11-4 ', 4
union all select
'娃哈哈酸奶 ',100, '100克 ', 1 , '2006-12-3 ',5

select 产品名称,sum(case when zhuangtai=1 then -数量 else 数量 end)
,规格
from t_tbl
group by 产品名称,规格

==========
产品名称 规格
-------------------------------------------------- ----------- ----------
娃哈哈酸奶 200 100克
恰恰瓜子 20 500克

(所影响的行数为 2 行)


drop table t_tbl
[解决办法]

这么多人都回答了......

热点排行