Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.01.2016
Сообщений: 8

Как "прилепить" две схожих таблицы, полученных SQL запросом?

26.05.2024, 15:13. Показов 1666. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане! Есть у меня небольшой файл Excel с SQL запросом (Фрукты 1.xlsx). В данный момент возникла необходимость присоединить к сформированной запросом таблице снизу точно такую же по структуре таблицу, из того же источника, только с несколькими другими столбцами (Фрукты 2.xlsx). То есть нужно сделать так, чтобы к имеющейся таблице снизу добавилась такая же таблица, столбцы которой впоследствии можно будет изменять. При использовании второго "Union All" и последующего за ним кода программа не добавляет таблицу, а ругается на "Несоответствие типов данных в выражении условия отбора".

Почему-то этот запрос работает:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Select
Null As [Дата],
t1.[Продукт],
t1.[FSum] As [Остаток на начало периода],
0 As [Приход],
0 As [Расход],
t1.[FSum] As [Остаток на конец периода]
From (Select [Продукт], Sum([Приход] - [Расход]) As FSum From [База$] Where [Дата] < ? Group By [Продукт] Order By [Продукт]) t1
 
Union All
 
Select
t2.[Дата],
t2.[Продукт],
t2.[Остаток на начало периода],
t2.[Приход],
t2.[Расход],
t2.[Остаток на конец периода]
From (Select [Дата], [Продукт], [Остаток на начало периода], [Приход], [Расход], [Остаток на конец периода] From [База$] Where [Дата] >= ? And [Дата] <= ? Order By [Дата], [Продукт]) t2
А точно такой же, повторенный через Union All - нет?

T-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
Select
Null As [Дата],
t1.[Продукт],
t1.[FSum] As [Остаток на начало периода],
0 As [Приход],
0 As [Расход],
t1.[FSum] As [Остаток на конец периода]
From (Select [Продукт], Sum([Приход] - [Расход]) As FSum From [База$] Where [Дата] < ? Group By [Продукт] Order By [Продукт]) t1
 
Union All
 
Select
t2.[Дата],
t2.[Продукт],
t2.[Остаток на начало периода],
t2.[Приход],
t2.[Расход],
t2.[Остаток на конец периода]
From (Select [Дата], [Продукт], [Остаток на начало периода], [Приход], [Расход], [Остаток на конец периода] From [База$] Where [Дата] >= ? And [Дата] <= ? Order By [Дата], [Продукт]) t2
 
Union All
 
Select
Null As [Дата],
t1.[Продукт],
t1.[FSum] As [Остаток на начало периода],
0 As [Приход],
0 As [Расход],
t1.[FSum] As [Остаток на конец периода]
From (Select [Продукт], Sum([Приход] - [Расход]) As FSum From [База$] Where [Дата] < ? Group By [Продукт] Order By [Продукт]) t1
 
Union All
 
Select
t2.[Дата],
t2.[Продукт],
t2.[Остаток на начало периода],
t2.[Приход],
t2.[Расход],
t2.[Остаток на конец периода]
From (Select [Дата], [Продукт], [Остаток на начало периода], [Приход], [Расход], [Остаток на конец периода] From [База$] Where [Дата] >= ? And [Дата] <= ? Order By [Дата], [Продукт]) t2
А еще я заметил следующую закономерность: все запросы в различных комбинациях отлично работают через Union All до тех пор, пока в тексте запроса присутствуют до трех включительно вопросительных знаков "?". Как только появляется четвертый "?", Excel предлагает добавить Параметр, и после добавления Параметра - все клинит. Подскажите кто знает, возможно где-то существуют настройки Параметров, Имен параметров или что-то с этим связанное?

Файлы-примеры работают при размещении в корне диcка D.
Вложения
Тип файла: xlsx Фрукты 1.xlsx (14.4 Кб, 4 просмотров)
Тип файла: xlsx Фрукты 2.xlsx (14.4 Кб, 4 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2024, 15:13
Ответы с готовыми решениями:

QT и MS SQL. Вывод данных в табличную форму полученных запросом в хранимой процедуре
Если получаю данные используя QSqlQuery просто написав текст запроса, то всё без проблем работает и данные выводятся ...

Как SQL-запросом вывести структуру таблицы?
Пишу конвертер баз данных (oracle&lt;-&gt;postgres). И на очередном этапе написания требуется из oracle &quot;вытащить&quot; структуру таблицы....

Как SQL запросом получить список полей таблицы текущей базы данных?
Пробую получить поля таблицы текущей базы данных. Нашёл пример: SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE...

22
14 / 13 / 1
Регистрация: 17.04.2023
Сообщений: 107
01.06.2024, 07:25
Студворк — интернет-сервис помощи студентам
Чтобы соединить 2 таблицы с разным количеством столбцов с помощью union можно сделать следующее: к той таблице, у которой столбцов меньше добавить эти недостающие столбцы в таком виде например:
SELECT
NULL AS 'Наименование1'
,NULL AS 'Наименование2'
и тд.

Второй вариант это использовать в vba метод nextrecordset, и выгружать 2 отдельных запроса SQL в excel либо друг за другом на один лист, либо на разные листы и там дальше уже делать с ними все что нужно.
1
14 / 13 / 1
Регистрация: 17.04.2023
Сообщений: 107
01.06.2024, 17:31
Первый вариант требует одинакового порядка столбцов и их типов. Второй вариант - вообще без разницы, можно хоть что соединять.
1
0 / 0 / 0
Регистрация: 12.01.2016
Сообщений: 8
19.06.2024, 23:43  [ТС]
это какой-то внезапный приплызд! спустя год хаотических манипуляций все заработало!!! сему предшествовало колдовство с именами параметров в файле .odc, затем перемена местами блоков запроса и, в связи с этим, переназначение ячеек в параметрах...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2024, 23:43

Две таблицы одним запросом
Имеется две таблицы в программе для учета товара. В них должна добавляться одна и та же информация о товаре. Но первая таблица изменяется в...

Как заполнять таблицы в Windows Forms при условии, что данные нужно вызывать запросом (SQL)?
Какой самый простой способ заполнения таблиц формы при условии, что данные идут в ответ на SQL - запросы и являются слиянием нескольких...

T-SQL Как запросом из таблицы вывести пару записей, которая всегда имеет одинаковые данные по одному столбцу
Добрый день! У меня есть таблица Студенты_Доклады, которая содержит 2 поля: Номер зачетки студента и номер принадлежащего ему доклада....

Как можно сравнить две таблицы sql-ля?
Спасибо, а как можно сравнить две таблицы sql-ля в C# пе? Например у меня есть справочники(норма), и пациент сдает анализы. Надо что бы...

Заполнение таблицы sql запросом
Как мне написать запрос, используя значения из таблицы 1, заполнилась таблица 2. Т.е. значения столбца y в таблице 2, должны быть равны...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru