Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290

Как в запросе с UNION вывести результаты в отдельных колонках?

25.01.2021, 09:23. Показов 2379. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Собственно вопрос в заголовке.
Есть примерно такой запрос:
SQL
1
SELECT COUNT(*) AS kol1 FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND KEY = 'sgtin'  UNION ALL  SELECT COUNT(DISTINCT kychka) AS kol2 FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND ( KEY = 'sscc' OR KEY = 'sscc_yes' )
Выводится результат в одну колонку в kol1 почему? Или Union для этого только и предназначен,значит и 'as' для колонок не поможет?
Это я к тому что есть практически два почти одинаковых запроса к одной таблице хотелось бы выполнить один раз.
Сначала я думал над таким решением:
SQL
1
SELECT COUNT(*) AS kol1, COUNT(DISTINCT kychka) AS kol2 FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND ( KEY = 'sgtin' OR ( KEY = 'sscc' OR KEY = 'sscc_yes' ) )
Но не понял как разделить условия чтобы одно условие сработало для одной колонки kol1 а второе для kol2. Именно с условиями с колонкой key

Для наглядности чтобы проще для глаз было:
Select колонка1 from таблица1 where кол='зн' and key='sgtin'
Select колонка2 from таблица1 where кол='зн' and key='sscc'
Вот два запроса почти одинаковые,можно как то выполнить одним запросом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2021, 09:23
Ответы с готовыми решениями:

Выделить несколько отдельных столбцов по условию (с помощью Union)
Помогите, пожалуйста. Требуется удалить колонки названию заголовка. таблица небольшая, где-то 1000 строк, но удаление по...

Как использовать результаты COUNT(Field) в запросе?
Есть таблица Books, которая, в том числе, содержит поля Book, Category и Price. Как написать такой запрос, который вернёт список...

Ошибка в запросе с UNION
begin yearvalue1:=LabeledEdit2.Text; begin with ADOQuery2 do begin Close; SQL.Clear; ...

2
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
25.01.2021, 09:32
Цитата Сообщение от Сергей225 Посмотреть сообщение
Но не понял как разделить условия чтобы одно условие сработало для одной колонки kol1 а второе для kol2
CASE
1
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
25.01.2021, 11:41  [ТС]
Grossmeister, О точно забыл про него.

Добавлено через 33 минуты
Grossmeister, Правильно ли делаю?
Select колонка1 as kol1,колонка2 as kol2 from таблица1 where кол='зн' and CASE WHEN kol1 THEN key='sgtin' WHEN kol2 THEN key='sscc' END;

Добавлено через 55 минут
Grossmeister, Сделал так:
Select колонка1 as kol1,колонка2 as kol2 from таблица1 where кол='зн' and CASE key WHEN 'sgtin' THEN key='sgtin' WHEN 'sscc' THEN key='sscc' END;


Вот реальный пример
SQL
1
SELECT COUNT(*) AS sgtin, COUNT(DISTINCT kychka) AS sscc FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND nser = 'M1888/10520' AND anal = '301130' AND CASE KEY WHEN 'sgtin' THEN KEY='sgtin' WHEN 'sscc' THEN ( KEY = 'sscc' OR KEY = 'sscc_yes' ) END;
Ошибок нет,выводится как надо,но результат неправильный.
должен 2 0 а вывелось 2 1
В таблице там две строчки с sgtin то есть для sgtin верно 2,а одна строчка с inf,то есть нету пока с sscc и результат должен 0 быть для count(DISTINCT kychka).
То есть если по отдельности выполню два запроса то будет 2 0

Добавлено через 35 минут
Grossmeister, Все я решил проблему. Вопрос закрываем. Кстати CASE не помог.
Я сделал так:
SQL
1
SELECT DISTINCT ( SELECT COUNT(*) FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND nser = 'M1888/10520' AND anal = '301130' AND KEY = 'sgtin' ) AS sgtin, ( SELECT COUNT(DISTINCT kychka) FROM qr_prih WHERE regp = '91100' AND nnmt = '841486' AND nser = 'M1888/10520' AND anal = '301130' AND ( KEY = 'sscc' OR KEY = 'sscc_yes' ) ) AS sscc FROM qr_prih
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2021, 11:41
Помогаю со студенческими работами здесь

Лотерея, нужно устранить одинаковые результаты в разных колонках
Здравия всем! помогите устранить одинаковые результаты в разных колонках вот код Public Class Form1 Private Sub...

union как определить из какой таблице запись после UNION?
Подскажите пожалуйста! Вот например две таблице (TEBLE_1) у которой поля row_1(BIGINT) и (TABLE_2) у которой поля row_2(TEXT) Я ИХ...

Подсчитать количество записей по условию в запросе с union
Подскажите пожалуйста, есть такой запрос, все работает правильно. select 1 sec, customer.main customer_main, sum(accounting.L) ...

MPAndroidChart. Как вывести 2 отдельных диаграммы?
Всем привет. Работаю с MPAndroidChart. Cначала принимаю данные в bundle в котором есть 2 разных листа потом делаю запросы на сервер получаю...

Как результаты поиска вывести в форме таблицы и этот документ вывести на печать?
Есть форма поиска <div id=poisk> <form method="GET"> <input name="action" value="search" type="hidden"> ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru