2013-10-04 83 views
0

我想知道是否有人可以帮助我构建查询或php代码,该代码可以在下表中生成“所需输出”列中的输出。按符号计算余额

基本上,查询或PHP代码需要通过符号来概括的financialvol山坳,并显示在每个计算的结果,或者当openposition为0

tid | time  | symbol | openposition | financialvol | desired output 
87646 | 10:29:38 | CTIP3 | 400   | 8744.00  | 
87645 | 10:29:47 | CTIP3 | 800   | 8732.00  | 
87644 | 10:29:52 | CTIP3 | 1000   | 4366.00  | 
87643 | 10:30:02 | CTIP3 | 1200   | 4368.00  | 
87642 | 10:30:06 | CTIP3 | 1400   | 4364.00  | 
87639 | 10:31:57 | CTIP3 | 1200   | -4382.00  | 
87638 | 10:32:04 | CTIP3 | 1000   | -4372.00  | 
87637 | 10:32:08 | CTIP3 | 800   | -4362.00  | 
87636 | 10:32:14 | CTIP3 | 600   | -4388.00  | 
87635 | 10:32:40 | CTIP3 | 0    | -13098.00 | -28 
87647 | 10:28:54 | PCAR4 | 400   | 40480.00  | 
87641 | 10:31:30 | PCAR4 | 200   | -20246.00 | 
87640 | 10:31:41 | PCAR4 | 0    | -20340.00 | -106 
87651 | 10:27:42 | TIMP3 | 1500   | 12345.00  | 
87650 | 10:27:48 | TIMP3 | 11500   | 82300.00  | 
87649 | 10:28:09 | TIMP3 | 1500   | -82600.00 | 
87648 | 10:28:23 | TIMP3 | 0    | -12345.00 | -300 
87657 | 10:26:44 | VIVT4 | -500   | -23710.00 | 
87656 | 10:26:53 | VIVT4 | 0    | 23700.00  | -10 
87655 | 10:26:59 | VIVT4 | -500   | -23740.00 | 
87653 | 10:27:00 | VIVT4 | -1000   | -23740.00 | 
87654 | 10:27:00 | VIVT4 | -1500   | -23740.00 | 
87652 | 10:27:24 | VIVT4 | 0    | 71055.00  | -175 

感谢大家的期待和努力!

回答

0
SELECT x.* 
    , CASE WHEN x.openposition = 0 THEN SUM(y.financialvol) ELSE '' END desired 
    FROM my_table x 
    JOIN my_table y 
    ON y.symbol = x.symbol AND y.time <= x.time 
GROUP 
    BY x.symbol, x.time; 
+0

你试过编辑过的版本吗? – Strawberry

+0

太棒了!谢谢。 – Thiago

0

我相信你正在寻找类似this的东西。

对于这个任何意义,你要为你的排序表:order by time asc

+0

并不像我的问题是每一符号的运行总计每次openposition为0,在运行总复位 – Thiago