Ошибка «Не удалось преобразовать строку символов в уникальный идентификатор». при использовании UNION ALL

Я получаю:

Ошибка преобразования при преобразовании символьной строки в уникальный идентификатор.

ошибка, когда я пытаюсь UNION ALL выполнить два одинаковых запроса, заключенных в подзапросы. Я не уверен, о чем идет речь, поскольку запросы работают нормально по отдельности. Может быть дело в синтаксисе?

SELECT * 
FROM (
        SELECT 
            Table1.[Owner]
        FROM
            (
            SELECT
                owneridname [Owner], 
                incidentid [Ticket Number1]
                FROM
                    incident
            ) as Table1

            LEFT JOIN

            (
                SELECT
                    MAX(DATEADD(hh,-7,svb_timestamp)) [Time Stamp],
                    svb_caseid [Ticket Number2]
                FROM
                    svb_caseupdate
                GROUP BY svb_caseid
            ) as Table2
         ON Table1.[Ticket Number1] = Table2.[Ticket Number2]
) sq1
         
UNION ALL

SELECT *
FROM (
         SELECT 
            Table1.[Owner]
         FROM
            (
            SELECT
                svb_cssowner [Owner], 
                incidentid [Ticket Number1]
                FROM
                    incident
            ) as Table1

            LEFT JOIN

            (
                SELECT
                    MAX(DATEADD(hh,-7,svb_timestamp)) [Time Stamp],
                    svb_caseid [Ticket Number2]
                FROM
                    svb_caseupdate
                GROUP BY svb_caseid
            ) as Table2
         ON Table1.[Ticket Number1] = Table2.[Ticket Number2]
) sq2

Я ожидал объединить обе таблицы, что должно было быть довольно просто.

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

LSerni 07.07.2024 23:53

Вы уже спрашивали об этом и получили такие же комментарии

Dale K 08.07.2024 00:05

Вместо того, чтобы иметь два одинаковых запроса, за исключением выбора другого столбца из incident, вам лучше использовать что-то вроде SELECT V.[Owner], incidentid [Ticket Number1] FROM incident CROSS APPLY (VALUES(svb_cssowner), ( CAST(owneridname AS VARCHAR(36)))) V([Owner]), а затем присоединиться к этому

Martin Smith 08.07.2024 00:11
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
3
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытаетесь объединить incident.owneridname и incident.svb_cssowner. СУБД сообщает вам

Ошибка преобразования при преобразовании символьной строки в уникальный идентификатор.

Таким образом, один из двух столбцов является столбцом уникального идентификатора, а другой — строковым столбцом. СУБД пытается преобразовать строковое значение в значение уникального идентификатора, но это не удается. Вместо этого вам нужно преобразовать столбец uniqueidentifier в строку, чтобы иметь строки, которые вы объединяете.

Наверное, что-то вроде

(
  SELECT
    CAST(owneridname AS CHAR(36)) AS [Owner], 
    incidentid [Ticket Number1]
  FROM incident
) as Table1

Это решение сработало! Спасибо за объяснение - это имеет большой смысл.

threeballedalien 08.07.2024 20:08

Другие вопросы по теме