Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 128

Функцией добавить колонку в представление

10.05.2017, 22:29. Показов 2009. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, очень нужна помощь, пожалуйста помогите есть представление и есть функция, нужно с помощю этой функции добавить "status" колонку в представление.

Это функция

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
CREATE FUNCTION get_entity_status(in_entity_type text, in_entity_id INTEGER) RETURNS text
LANGUAGE plpgsql
AS $$
DECLARE
  var_status_name text;
BEGIN
  var_status_name := '';
 
  IF in_entity_type ilike 'USER' THEN
 
    WITH countdown_timestamp AS (
        SELECT ((now()) :: DATE - ((settings_global.metric_days) :: DOUBLE PRECISION * '1 day' :: INTERVAL)) AS from_date
        FROM settings_global
        ORDER BY settings_global.id
        LIMIT 1
    ), user_status AS (
        SELECT
          us.id,
          CASE
          WHEN st.id = 1 AND us.date_updated < ct.from_date
            THEN arch_st.name
          WHEN st.id = 1 AND us.date_updated >= ct.from_date
            THEN act_st.name
          ELSE st.name
          END AS status_name
        FROM "user" us
          JOIN STATUS st ON (us.status_id = st.id)
          CROSS JOIN countdown_timestamp ct
          JOIN STATUS arch_st ON (arch_st.id = 4)
          JOIN STATUS act_st ON (act_st.id = 2)
        WHERE us.id = in_entity_id
    )
    SELECT COALESCE((SELECT status_name FROM user_status), '') INTO var_status_name;
 
  ELSIF in_entity_type ilike 'CLIENT' THEN
 
    WITH countdown_timestamp AS (
        SELECT ((now()) :: DATE - ((settings_global.metric_days) :: DOUBLE PRECISION * '1 day' :: INTERVAL)) AS from_date
        FROM settings_global
        ORDER BY settings_global.id
        LIMIT 1
    ), client_status AS (
        SELECT
          cl.id,
          CASE
          WHEN st.id = 1 AND cl.date_updated < ct.from_date
            THEN arch_st.name
          WHEN st.id = 1 AND cl.date_updated >= ct.from_date
            THEN act_st.name
          ELSE st.name
          END AS status_name
        FROM client cl
          JOIN STATUS st ON (cl.status_id = st.id)
          CROSS JOIN countdown_timestamp ct
          JOIN STATUS arch_st ON (arch_st.id = 4)
          JOIN STATUS act_st ON (act_st.id = 2)
        WHERE cl.id = in_entity_id
    )
    SELECT COALESCE((SELECT status_name FROM client_status), '') INTO var_status_name;
 
  END IF;
 
  RETURN var_status_name;
END
$$;


Это представление:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
-- View: public.v_all_clients
 
-- DROP VIEW public.v_all_clients;
 
CREATE OR REPLACE VIEW public.v_all_clients AS 
 WITH countdown_timestamp AS (
         SELECT now()::DATE - settings_global.metric_days::DOUBLE PRECISION * '1 day'::INTERVAL AS from_date
           FROM settings_global
          ORDER BY settings_global.id
         LIMIT 1
        ), terminal_usage_info AS (
         SELECT DISTINCT u.terminal_server_id AS client_id
           FROM usage u
             CROSS JOIN countdown_timestamp ct
             JOIN usage_concurrent uc_1 ON u.id = uc_1.usage_id AND uc_1.date > ct.from_date
             JOIN client cl_1 ON u.terminal_server_id = cl_1.id
        )
 SELECT cl.id AS client_id,
    cl.automatic_org,
    cl.purchase_date,
    cl.is_sub_capacity_eligible,
    cl.is_device,
    cl.is_spla_server,
    cl.pvu,
    cl.notes,
    cl.manufacturer,
    cl.is_terminal_server,
    cl.purchase_price,
    cl.date_added,
    cl.is_portable,
    cl.is_server,
    cl.is_virtual,
    cl.computer_model,
    cl.status_id,
    cl.sku,
    cl.system_type,
    cl.total_number_of_processors,
    cl.total_number_of_processor_cores,
    cl.total_cpu_sockets,
    cl.total_memory_slots,
    cl.empty_memory_slots,
    cl.computer_name,
    cl.organization_id,
    cl.hypervisor_name,
    cl.owner_name,
    cl.identifying_number,
    cl.uuid,
    cl.thermal_state,
    cl.is_part_of_domain,
    cl.domain_id,
    cl.workgroup_id,
    cl.time_zone,
    cl.date_updated,
    org.name AS org_name,
    MIN(net.ip_address::text)::CHARACTER VARYING AS ip_address,
    dom.name AS domain_name,
    os.name AS os_name,
    cl.exclude_all_installations,
        CASE
            WHEN tui.client_id IS NOT NULL THEN TRUE
            ELSE FALSE
        END AS has_devices,
    cl.has_agent,
    cl.is_host
   FROM client cl
     LEFT JOIN organization org ON org.id = cl.organization_id
     LEFT JOIN DOMAIN dom ON dom.id = cl.domain_id
     LEFT JOIN x_client_network_adapter net ON net.client_id = cl.id AND net.default_gateway::text <> ''::text
     LEFT JOIN x_client_os cos ON cos.client_id = cl.id
     LEFT JOIN os ON os.id = cos.os_id
     LEFT JOIN terminal_usage_info tui ON cl.id = tui.client_id
  WHERE cl.id IS NOT NULL
  GROUP BY cl.id, cl.automatic_org, cl.purchase_date, cl.is_sub_capacity_eligible, cl.is_device, cl.is_spla_server, cl.pvu, cl.notes, cl.manufacturer, cl.is_terminal_server, cl.purchase_price, cl.date_added, cl.is_portable, cl.is_server, cl.is_virtual, cl.computer_model, cl.status_id, cl.sku, cl.system_type, cl.total_number_of_processors, cl.total_number_of_processor_cores, cl.total_cpu_sockets, cl.total_memory_slots, cl.empty_memory_slots, cl.computer_name, cl.organization_id, cl.hypervisor_name, cl.owner_name, cl.identifying_number, cl.uuid, cl.thermal_state, cl.is_part_of_domain, cl.domain_id, cl.workgroup_id, cl.time_zone, cl.date_updated, org.name, dom.name, os.name, tui.client_id;
 
ALTER TABLE public.v_all_clients
  OWNER TO ilgiz;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2017, 22:29
Ответы с готовыми решениями:

Как заполнить колонку А от 1 до 200, колонку В от 2 до 40, колонку С от 3 до 600
Написать макрос, на текстовом листе заполнить колонку А от 1 до 200, колонку В от 2 до 40, колонку С с 3 до 600 Заранее большое спасибо!

Добавить колонку!
Доброго времени суток! Простите, но я только учусь! В Справочник номенклатура, надо добавить колонку с отображением штрихкода товара!...

Добавить колонку в БД
Вот законектился к базе, нужно теперь додать в ней пару новых колонок. Кто знает, как это сделать?

2
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
11.05.2017, 00:24
Лучший ответ Сообщение было отмечено MariamG как решение

Решение

а так что ли не работает?
T-SQL
1
2
3
cl.is_host,
get_entity_status('CLIENT', cl.Id) as status
FROM client cl
1
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 128
11.05.2017, 10:21  [ТС]
Спасибо огромное, я так заморочилась, хотела добавить что то в скрипты. Оказалось все на много проще))) Честно, словами не передать как я благодарна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2017, 10:21
Помогаю со студенческими работами здесь

Добавить колонку - меню
Необходимо с правой стороны (в пустом месте) сделать меню (Которое потом будет открываться в левую сторону). То есть в пустом месте справа...

Добавить в отчет колонку
1c 8.1 УТ 10.3 Отчет Валовая прибыль. Необходимо добавить колонку Регистратор. В запросе она есть. В построителе указана. В...

Программно добавить колонку в ТЧ
Есть документ. Есть форма элемента. На форме есть табличная часть. Хочу добавить в табличную часть новую колонку. Данные из колонки будут...

Как добавить колонку в DataGridView?
У меня есть таблица на форме dataGridView1, мне нужно добавить в эту таблицу несколько колонок и строк, притом программно. В данном...

Как добавить колонку из C# в MySQL
Всем привет! Суть в следующем: нужно добавить в созданную ранее мною базу колонку, добавление должно проходить из окна моей программы!...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru