2012-10-16 4 views
1

Я не в состоянии сделать следующий SQL работу в Interbase: я получаю следующее сообщение об ошибке:SQL (Interbase): Случай строки с Агрегатной функцией

Error at line 1 Attempt to execute an unprepared dynamic SQL statement

SQL:

SELECT CASE 
    WHEN kl='K' THEN (SUM(DB)-SUM(CR)) 
    WHEN kl='L' THEN (SUM(CR)-SUM(DB)) 
    END AS Saldo 
FROM Table1 
GROUP BY KL 

для Table1 определенного таким образом:

Column name Data type 
------------ ------------ 
KL   varchar(1) 
DB   int 
CR   int 

Тем не менее он работает в SQL fiddle

следующее также работает!

SELECT CASE 
    WHEN kl='K' THEN 1 
    WHEN kl='L' THEN 2 
    END as Saldo 
FROM Table1 
Group By KL 
+0

это поможет, если вы предоставите ошибку – Diego

+0

@diego Добавлена ​​ошибка уведомления + пример кода, который работает –

+0

DB выглядит своего рода подозрительными ко мне, как имя столбца. Предоставляет ли Interbase котировки идентификатора? Кроме того, скрипт, который вы выложили для MySQL, а не Interbase (они не перечисляют Interbase Firebird как поддерживаемый). –

ответ

0

Обнаружено это!

SELECT Sum(CASE 
     WHEN kl='K' THEN db 
     WHEN kl='L' THEN cr 
     END) 
     -Sum(CASE 
     WHEN kl='K' THEN CR 
     WHEN kl='L' THEN DB 
     END) 

FROM Table1 
Group By KL 
Смежные вопросы