sql存储过程求救!急急急急急!

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:38:47
数据库中的一列
比如:店名 收入
A连锁店1 10
A连锁店2 20
A连锁店3 30
B连锁店 40
C连锁店 50
。。。 。。。
现在我想创建一个存储过程
把比如 A连锁店的1/2/3的收入加在一起作为一项
之后一次类推 有1/2/。。。的同名店收入各自加起来为一项
之后再比较收入 用收入排序
不会写了。。。。
各位大哥 给个存储过程 能用绝对追加分
万分感谢

交叉表?
表结构旋转? 不太理解你说的,试试交叉表先。
交叉表:
先对表增加一字段mark integer
首先update 表 set mark=(case 店名 when '店1' then 1
when '店2' then 2
when '店3' then 3 end)
然后
select t1.*
from (select p.店名 ,
SUM(CASE p.mark WHEN 1 THEN p.收入 ELSE 0 END) AS 店1,
SUM(CASE p.mark WHEN 2 THEN p.收入 ELSE 0 END) AS 店2,
SUM(CASE p.mark WHEN 3 THEN p.收入 ELSE 0 END) AS 店3
from 表 AS P
GROUP BY p.店名) AS t1

自己试试看是自己要的结果不。

不清楚你的目的,是要查询结果么?

如果是的话,可以用sql解决阿,
另外,如何判断 A店1,A店2,A店3,是同名店,有可以利用的字段么?

不用存储过程了吧,用个查询语句就把你要的东西查出来了。
select left(店名,len(店名)-1),sum(收入) from 表 group by left(店名,len(店名)-1) order by sum(收入)
你看,这样就出来了,你把它做成一个视图就可以了。
不过有个问题,你输入的店名一定要规范,必须是“X连锁店N”,如果N超过9个,则统一改成“X连锁店NN”。语句改成:select left(店名,len(店名)-2),sum(收入) from 表 group by left(店名,len(店名)-2) order by sum(收入)