请问各位大侠,这个用SQL或存储过程怎么做?(很变态的问题,胆小不要进来)(100)

  • 主题发起人 主题发起人 cnlmgsoft
  • 开始时间 开始时间
C

cnlmgsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
表 Tab_Action ------------- Action_ID Action 1 买水果 2 买书 3 买菜 4 买牛奶 表 Tab_Person ------------- Person_ID name comefrom 1 张三 北京 2 李四 上海 3 王五 北京 表 Tab_ShopList ------------- Shop_ID Shop_Date Person_ID Action_ID SpendMoney 1 2009-6-1 1 1 20 2 2009-6-1 1 1 10 (张三 在同一天 买了2次水果) 3 2009-6-3 1 2 50 4 2009-6-2 2 2 20 5 2009-6-2 2 2 50 (李四 在同一天 买了2次书) 6 2009-6-3 2 4 5 7 2009-6-3 3 3 35 想要的结果 如下: 6月份 -------------------------------------------- 姓名 日期 买水果(合计该日费用) 买书(合计该日) 买菜(合计该日) 买牛奶(合计该日) 张三 2009-6-1 30 (买了2次水果) 0 0 0 张三 2009-6-3 0 50 0 0 张三 6月小记 30 50 0 0 王五 2009-6-3 0 0 35 0 王五 6月小记 0 0 35 0 北京人 6月中记 30 50 35 0 李四 2009-6-2 0 70 (买了2次书) 0 0 2009-6-3 0 0 0 5 李四 6月小记 0 70 0 5 上海人 6月中记 0 70 0 5 6月总记 30 120 35 5
 
各位大侠,请看清题目, 不光是行列转换啊, 还有合计( 小记、中记、总记) 啊!!! 感觉这个很变态啊,要不要使用临时表???谢谢啊 小记、中记、总记:对 一个人 该月的各项花费 进行 小记 对 同一城市 的人 该月的各项花费 进行 中记 对 所有人 该月的各项花费 进行 总记
 
应该可以不用临时表,但要用三个游标,来指定三个表,最终生成一个非常长的SQL语句。执行这个语句就能有结果了。但如果你真实的表比你说的复杂的多,那就有可能要用临时表了,因为SQL SERVER对调用的表的数量及字段数量有限制。当年我用二十个表做了六个UNION ALL,结果报错,没办法,只好生成六个临时表,再UNION ALL,才得到结果。
 
一个临时表就可以了,主要是行变列稍稍要花点功夫,其它小计总计,只不过是多写两句SUM而已
 
呵呵,是有点变态,但不难做
 
qjh0142008 大侠 , 真的不难做吗?说说思路啊,谢谢啊!!!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
850
import
I
I
回复
0
查看
691
import
I
后退
顶部