2010-04-22 2 views
3

Использование MySQL 5 с таблицей «abrechnung»SQL Query Count на колонке Информация

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

+0

спасибо, но это не распространяется, если есть 2 2-й в строке – Acron

+0

I думаю, что это делает, так как он делает вычитание за каждые 2 ... его 4- (если wal = 2, то 1 еще 0) - (если jon = 2 then 1 else 0) -usw ... – jpabluz