有一数据表 PPT
格式如下
名称 日期 数量
A 2009-5-11 100
A 2009-5-11 -15
A 2009-5-12 -20
A 2009-5-13 50
A 2009-5-15 -5
B 2009-5-10 200
B 2009-5-13 -100
B 2009-5-18 20查询后形成以下格式表格比如查询A
日期 入 出 余
20095-11 100 15 85
2009-5-12 20 65
2009-5-13 50 115
2009-5-15 5 110
这样一种表格形式,请教用查询语句如何写??????
格式如下
名称 日期 数量
A 2009-5-11 100
A 2009-5-11 -15
A 2009-5-12 -20
A 2009-5-13 50
A 2009-5-15 -5
B 2009-5-10 200
B 2009-5-13 -100
B 2009-5-18 20查询后形成以下格式表格比如查询A
日期 入 出 余
20095-11 100 15 85
2009-5-12 20 65
2009-5-13 50 115
2009-5-15 5 110
这样一种表格形式,请教用查询语句如何写??????
解决方案 »
- delphi做数据备份的问题,请大家帮忙,谢谢了,我是新手,虚心请教
- 如何实时取得屏幕上某点的颜色变化?
- DLL文件导入JPG资源和引用DLL文件的JPG资源的问题
- delphi中怎样通过消息改变statusbar状态栏上第2、3等显示位置上的文本内容???
- 用Wise打包怎么把SQL Server2000需要的东东也打进去呢?
- delphi6.0下套打的问题,急需
- 有人用过AGENT控件吗??
- 如何实现备份数据库和恢复数据库????
- 奇怪的SQL存储过程问题,大家看看。。。
- 程序员有多少会五笔的,统计一下,大家都来跟贴!
- 如何获得自动称重系统的串口数据
- delphi fastreport中bit类型字段的显示问题
from
(select distinct [日期] from PPT) as main_PPT
left join
(select [日期], sum([数量]) as [数量] from PPT where [数量] > 0 group by [日期]) as in_PPT
on in_PPT.[日期] = main_PPT.[日期]
left join
(select [日期], sum([数量]) as [数量] from PPT where [数量] < 0 group by [日期]) as out_PPT
on out_PPT.[日期] = main_PPT.[日期]
left join
(select [日期], sum([数量]) as [数量] from PPT group by [日期]) as result_PPT
on result_PPT.[日期] = main_PPT.[日期]
select 日期 ,sum(isnull(入,0)) as 入,sum(isnull(出,0)) as 出,sum(isnull(入,0)+isnull(出,0)) as 余
from
(SELECT
日期,
case when (数量 > 0) then 数量 end AS 入,
case when (数量 < 0) then 数量 end AS 出
FROM tb where 名称 = 'A') A
group by 日期
余额用游标再处理一下就行
(SELECT 名称,日期,
case when (数量 > 0) then 数量 end AS 入,
case when (数量 < 0) then 数量 end AS 出
FROM tb ) A group by 名称,日期
(SELECT 名称,日期, sum(case when (数量 > 0) then 数量 end) AS 入,
sum(case when (数量 < 0) then 数量 end) AS 出 FROM group by 名称,日期) tA,
(SELECT 名称,日期, sum(case when (数量 > 0) then 数量 end) AS 入,
sum(case when (数量 < 0) then 数量 end) AS 出 FROM group by 名称,日期) tb
where ta.名称=tb.名称 and ta.日期<=tb.日期
group by ta.名称,ta.日期 ,ta.入 ,ta.出