Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как работать с переменными внутри запроса? / 9 сообщений из 9, страница 1 из 1
11.09.2019, 12:56
    #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
11.09.2019, 13:41
    #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
11.09.2019, 14:11
    #39860326
Cola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с переменными внутри запроса?
СПАСИБО!!!!
Правда про переменные все равно не понятно...
...
Рейтинг: 0 / 0
11.09.2019, 14:27
    #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
11.09.2019, 15:18
    #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
11.09.2019, 15:20
    #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
11.09.2019, 15:41
    #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
11.09.2019, 15:48
    #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
11.09.2019, 16:59
    #39860437
Cola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с переменными внутри запроса?
sereginseregin,
Решила по другому. На стороне приложения сделал преобразование.
Спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как работать с переменными внутри запроса? / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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