Несоответствие типов при объединении двух запросов SQL с UNION - PullRequest
0 голосов
/ 11 июня 2019
select a,b,c, from transmission t where t.filnename ='ABC'  
select d,e,f, from transmission t where t.filnename ='ABC'

Я хочу, чтобы результаты были представлены в виде двух строк в одном наборе результатов, так как результат попадет в отчет DFF.

Вывод должен быть:

a,b,c  
d,e,f

Я пробовал UNION, но он выдает мне эту ошибку:

Ошибка преобразования типа данных varchar в bigint.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Типы данных, по крайней мере, одного из столбцов a, b или c, представляют собой varchar, и, по крайней мере, один из d, e и f в одной и той же позиции (первая, вторая или третья) - bigint. Как говорит комментатор, вы можете привести bigint к varchar, чтобы он заработал.

При использовании UNION столбцы, появляющиеся в одной и той же позиции, должны иметь одинаковые (или хотя бы совместимые) типы.

0 голосов
/ 11 июня 2019

Дайте столбцам одинаковое имя, используя AS,

select d AS a, e AS b, f AS c,

и приведите его к общему супертипу.Если ваша база данных поддерживает это.Например, MySQL имеет CAST: http://www.mysqltutorial.org/mysql-cast/

select CAST(d AS VARCHAR) AS a, ...

Или преобразовать его в общий супертип (например, путем анализа столбца VARCHAR в число).
И затемприсоединяйтесь к нему с UNION.

В любом случае, эта практика не слишком хороша.Я бы посоветовал переосмыслить подход и придерживаться нормализованной структуры данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...