Крест применимы к столбцам на сервере SQL.Синтаксическая ошибка рядом) - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь отключить несколько столбцов, но не могу найти способ решения синтаксической ошибки.

В нем указан неправильный синтаксис рядом с ')'.

Вот код:

SELECT dates, times, locations, events
FROM mytable
CROSS APPLY 
    (VALUES ('instance1', instance1),
            ('instance2', instance2),
            ('instance3', instance3),
            ('instance4', instance4)) as Items(locations, events)

Может ли быть так, что моя версия SQL Server не поддерживает значения должным образом, и мне нужно сохранить значения в другой таблице, чтобы передать их для перекрестного применения?

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Поскольку при использовании VALUES , например, возникают проблемы в хранилище данных SQL Azure, переключитесь на UNPIVOT

SELECT dates, times, locations, events
FROM mytable t
UNPIVOT (events FOR [locations] IN ([instance1],[instance2],[instance3],[instance4])) AS unpvt;

Test здесь

0 голосов
/ 11 декабря 2018

Довольно круто, я никогда не разворачивался таким образом.Я всегда использую команду UNPIVOT.Но это, кажется, работает довольно хорошо.Не зная структуры вашего mytable, я не знаю проблемы, но я предполагаю, что у него нет имен столбцов instance1 - instance4?

Вот автономный рабочий пример:

select dates
      ,times
      ,locations
      ,events
from
(
    values
        ('20181225', 'noon', 'a', 'b', 'c', 'd')
       ,('20181226', 'midnight', 'e', 'f', 'g', 'h')
) mytable (dates, times, instance1, instance2, instance3, instance4)
cross apply
(
    values
        ('instance1', instance1)
       ,('instance2', instance2)
       ,('instance3', instance3)
       ,('instance4', instance4)
) as Items (locations, events);
...