powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как работать с переменными внутри запроса?
9 сообщений из 9, страница 1 из 1
Как работать с переменными внутри запроса?
    #39860263
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как работать с переменными внутри запроса, не из функции, а именно из запроса.
Из функции все работает, а из запроса нет. Нужно проанализировать возвращаемое значение и подменить его по условию.
Эта часть не работает - не могу определить переменные - как это сделать?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
EXEC SQL BEGIN DECLARE SECTION;
    varchar td='Today';
    varchar ytd;
    varchar oth;
    int v1=1;
EXEC SQL END DECLARE SECTION;
    
    SET td ='Today';
    SET ydd ='Today';
    SET oth ='Other';



За то это работает,условия выполняются, но имя поля - "CASE" - как его заменить на другое - AS - не работают - ошибки
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN td
      WHEN "operation"."oper_data"= current_date-1 THEN ytd 
      ELSE oth 
 END
FROM     "public"."operation"



Всем за ранее благодарна!
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860305
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А так устроит?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH var AS (
                SELECT 
                        'Today' AS  td, 
                        'Today' AS ydd,
                        'Other' AS oth
          )
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN (SELECT td  FROM var)
      WHEN "operation"."oper_data"= current_date-1 THEN (SELECT ytd  FROM var) 
      ELSE (SELECT oth  FROM var) 
 END AS "day"
FROM     "public"."operation"
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860326
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО!!!!
Правда про переменные все равно не понятно...
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860339
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola...
Правда про переменные все равно не понятно...
А для чего понадобились переменные, почему не устаивает указание конкретных значений в самом запросе?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN 'Today'
      WHEN "operation"."oper_data"= current_date-1 THEN 'Today'
      ELSE 'Other'
 END AS "day"
FROM     "public"."operation"
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860365
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sereginsereginCola...
Правда про переменные все равно не понятно...
А для чего понадобились переменные, почему не устаивает указание конкретных значений в самом запросе?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN 'Today'
      WHEN "operation"."oper_data"= current_date-1 THEN 'Today'
      ELSE 'Other'
 END AS "day"
FROM     "public"."operation"



нет не подходит это решение... получаю WIDEMEMO, а мне нужен varchar
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860367
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня было такое решение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN 'Today'
      WHEN "operation"."oper_data"= current_date-1 THEN 'Yesterday' 
      ELSE 'Other' 
 END
FROM     "public"."operation"


и в гриде- в приложение WIDEMEMO, а мне нужно видеть и группировать - нужен Varchar
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860382
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
::varchar тоже не помогает ((

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
 CASE WHEN "operation"."oper_data"= current_date THEN 'Today'::varchar
      WHEN "operation"."oper_data"= current_date-1 THEN 'Yesterday'::varchar 
      WHEN "operation"."oper_data"> current_date-7 THEN 'Over the last 7 days'::varchar 
      ELSE 'Other'::varchar 
 END AS "Period"
FROM "public"."operation"  
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860386
sereginseregin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT  
         "public"."operation"."Coment",
         "public"."operation"."oper_data",
         "public"."operation"."sum",
         "public"."operation"."Shtamp",
CAST( 
   CASE WHEN "operation"."oper_data"= current_date THEN 'Today'
         WHEN "operation"."oper_data"= current_date-1 THEN 'Yesterday'
         WHEN "operation"."oper_data"> current_date-7 THEN 'Over the last 7 days' 
         ELSE 'Other' 
    END
AS VARCHAR) AS "Period"
FROM "public"."operation"  
...
Рейтинг: 0 / 0
Как работать с переменными внутри запроса?
    #39860437
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sereginseregin,
Решила по другому. На стороне приложения сделал преобразование.
Спасибо за помощь!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как работать с переменными внутри запроса?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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