Access 2016: дедупликация кода в обратном перекрестном запросе

Я пытаюсь написать запрос Access 2016, который преобразует плоскую таблицу

ID |Date |Site Name | Alexandrium | Ceratium | etc etc

... В многострочную таблицу:

ID |Date |Site Name | Species | Num

Я смог это сделать, но запрос очень длинный: у меня есть 20 значений/столбцов для каждого вида, и мне нужно написать запрос UNION для каждого имени вида:

    SELECT ID, Date, [Site Name], "Alexandrium" as Species, Alexandrium as Num
        FROM DatabaseName
    UNION ALL
    SELECT ID, Date, [Site Name], "Ceratium" as Species, Ceratium as Num
        FROM DatabaseName
    UNION ALL

И так далее, и так далее.

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

Заранее спасибо!


person caitlin    schedule 19.05.2016    source источник
comment
Вы можете предоставить образец исходных данных, чтобы мы могли подумать о том, как добраться туда отсюда.   -  person Ricardo C    schedule 20.05.2016


Ответы (1)


В Access нет простого способа разворота, как в SQL Server.

Если у вас есть список имен и вы не хотите записывать SQL, вы можете передать его в запрос следующим образом:

SELECT "SELECT ID, Date, [Site Name], '" & [SpeciesName]
& "' as Species, " & [SpeciesName] & " as Num FROM DatabaseName UNION " AS Expr1
FROM Species

Затем скопируйте результаты, удалите последний UNION и вставьте SQL в запрос.

person JJ32    schedule 19.05.2016