简单问题

lanbo1021 2006-04-20 01:41:48
表名:X

地区 A B C D 日期
1 3 3 3 3 31
2 6 6 6 6 31
3 ……
4 ……
1 2 2 2 2 30
2 4 4 4 4 30
3 ……
4 ……
怎样写SQL计算 31日地区1所对应的A 减去 30日地区1所对应的的A,然后再将结果除以31日的A得到所需的环比量
因为地区是不断重复的,只是因为每一天的数据不同,按日期划分开了。
数据库初学者,请各位大虾帮帮忙!谢谢!

昨天提了这样一个问,得到了xiaoku的解答

select 地区,
(
sum(case when 日期=31 then A else 0 end)
- sum(case when 日期=30 then A else 0 end)
) / sum(case when 日期=31 then A else 0 end) AS 环比
from X
group by 地区

现在查询出的结果是
地区 环比
1 ……
2 ……
3 ……
4 ……

请问,怎样将原表中31日的A值添加到查询结果中,即:
地区 A 环比
1 3 ……
2 6 ……
3 … ……
4 … ……

...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanbo1021 2006-04-20
  • 打赏
  • 举报
回复
谢谢!
dulei115 2006-04-20
  • 打赏
  • 举报
回复
if object_id('X') is not null drop table X
select 1 as 地区, 3 as A, 3 as B, 3 as C, 3 as D, 31 as 日期
into X
union select 2, 6, 6, 6, 6, 31
union select 3, 9, 9, 9, 9, 31
union select 4, 12, 12, 12, 12, 31
union select 1, 2, 2, 2, 2, 30
union select 2, 4, 4, 4, 4, 30
union select 3, 6, 6, 6, 6, 30
union select 4, 8, 8, 8, 8, 30
-------------------------------------------
select 地区, A, cast((A - (select A from X where 日期 = 30 and 地区= a.地区)) * 100 /A as varchar) + '%' as 环比
from X a
where 日期 = 31
/*
地区 A 环比
1 3 33%
2 6 33%
3 9 33%
4 12 33%
*/
--------------------------------------------
drop table X
lanbo1021 2006-04-20
  • 打赏
  • 举报
回复
谢谢!已解决!顺便问一下
用MSSQL计算百分比怎么操作呢?现在得出的都是小数,如何用SQL语句将其转化成百分比?和数据类型有关系没有呢?
Yang_ 2006-04-20
  • 打赏
  • 举报
回复
insert b
select a.地区,a.a,(a.a-b.a)/a.a as 环比
from x a,x b
where a.日期=31
and b.日期=30
and a.地区=b.地区


dulei115 2006-04-20
  • 打赏
  • 举报
回复
if object_id('X') is not null drop table X
select 1 as 地区, 3 as A, 3 as B, 3 as C, 3 as D, 31 as 日期
into X
union select 2, 6, 6, 6, 6, 31
union select 3, 9, 9, 9, 9, 31
union select 4, 12, 12, 12, 12, 31
union select 1, 2, 2, 2, 2, 30
union select 2, 4, 4, 4, 4, 30
union select 3, 6, 6, 6, 6, 30
union select 4, 8, 8, 8, 8, 30
-------------------------------------------
select 地区, A, (A - (select A from X where 日期 = 30 and 地区= a.地区)) * 1.0 /A as 环比 --必须加*1.0,LZ可以试试去掉的效果
from X a
where 日期 = 31
/*
地区 A 环比
1 3 .333333333333
2 6 .333333333333
3 9 .333333333333
4 12 .333333333333
*/
--------------------------------------------
drop table X

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧