powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где туплю в запросе ? SUM(CASE ----==
3 сообщений из 3, страница 1 из 1
Где туплю в запросе ? SUM(CASE ----==
    #39809574
dmbx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица journal вида

type_operation pl_monat amount
1 5 10
2 1 50
3 2 5
2 1 15
3 5 20

По идее должно выводить

type_operation 1 2 5
1 10
2 65
3 5 20

Не выводит ((((;


PHP выдаёт ошибку:

SELECT 'journal.type_operation', SUM(CASE WHEN journal.pl_monat = '1' THEN journal.amount ELSE 0 END) AS 1, SUM(CASE WHEN journal.pl_monat = '5' THEN journal.amount ELSE 0 END) AS 5, SUM(CASE WHEN journal.pl_monat = '2' THEN journal.amount ELSE 0 END) AS 2 FROM journal GROUP BY journal.type_operation

Warning: pg_query(): Query failed: ERROR: syntax error at or near "1" LINE 1: ...pl_monat = '1' THEN journal.amount ELSE 0 END) AS 1, SUM(CAS... ^ in C:\OSPanel\domains\localhost\charts\crosstab.php on line 51

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\OSPanel\domains\localhost\charts\crosstab.php on line 55

Образец кода:


function getDataString(){
global $db;


$query_month='SELECT DISTINCT pl_monat FROM journal';
$result=pg_query($db, $query_month);


//$query="SELECT type_operation, sum FROM journal";
//$res=pg_query($db, $query);



$sql = "SELECT journal.type_operation";
$headings = array();
while ($row = pg_fetch_array($result)) {
$sql .= ", SUM(CASE WHEN journal.pl_monat = '{$row['pl_monat']}' THEN journal.amount ELSE 0 END) AS {$row['pl_monat']}";
$headings[] = $row['pl_monat'];
}
$sql .= ' FROM journal GROUP BY journal.type_operation';

echo $sql;
$cross = pg_query($sql);
return $data;
...
Рейтинг: 0 / 0
Где туплю в запросе ? SUM(CASE ----==
    #39809577
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmbx,

почему вы решили, что число - это допустимый алиас для поля без использования кавычек?
https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
SQL identifiers and key words must begin with a letter (a-z, but also letters with diacritical marks and non-Latin letters) or an underscore (_).
...
Рейтинг: 0 / 0
Где туплю в запросе ? SUM(CASE ----==
    #39809585
dmbx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij , спасибо!

Переправил на:
SELECT 'journal.type_operation', SUM(CASE WHEN journal.pl_monat = '1' THEN journal.amount ELSE 0 END) AS field_1, SUM(CASE WHEN journal.pl_monat = '5' THEN journal.amount ELSE 0 END) AS field_5, SUM(CASE WHEN journal.pl_monat = '2' THEN journal.amount ELSE 0 END) AS field_2 FROM journal GROUP BY journal.type_operation

И всё застреляло :))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Где туплю в запросе ? SUM(CASE ----==
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]