2010-04-22 68 views
3

计数使用MySQL 5表“abrechnung”SQL查询的列信息

id datum  title betrag wal jon al ben 
7 2010-02-08 Essen 1362  0 0 1 0 
8 2010-02-15 Essen 324  0 0 1 2 
9 2010-02-15 Essen 5732  0 0 1 2 
10 2010-02-15 Essen 3245  0 2 1 2 

我想要的到底是什么:每个行“betrag”是通过一些分频,然后加入到最终的结果。被分割的数字是4 - 当前行中的数量2。

我目前的做法如下:

SELECT SUM(betrag) AS "W->A" FROM abrechnung WHERE (wal = "0" and al = "1"); 

这基本上选择,我想已经添加到最终结果的entrys。结果在这种情况下:10663.

其实最终的结果应该是:

1362/4 (no number 2 in that row for wal, jon, al or ben) 
+ 324/3 (there is one 2 in that row for ben) 
+ 5732/3 (same) 
+ 3245/2 (there are 2 2's in that row) 
----------- 
    3 981.66 

我希望这是明确的理解。

谢谢。

回答

1
SELECT SUM(betrag/(
4-CASE WHEN wal = 2 THEN 1 ELSE 0 END 
    -CASE WHEN jon = 2 THEN 1 ELSE 0 END 
    -CASE WHEN al = 2 THEN 1 ELSE 0 END 
    -CASE WHEN ben = 2 THEN 1 ELSE 0 END 
)) 
AS "W->A" FROM abrechnung 
+0

这是的Sybase语法,我没有进入MySQL现在来测试它是否在那里工作很好,但它应该 – DVK 2010-04-22 14:03:13

+0

谢谢你,但如果有2周2的连续 – Acron 2010-04-22 14:08:48

+0

我这并不能掩盖认为它确实,因为它正在进行每2分钟的减法...... 它的4-(如果沃尔= 2然后1其他0) - (如果jon = 2然后1其他0)-usw ... – jpabluz 2010-04-22 14:12:22