СВОДНОЕ ПРЕОБРАЗОВАНИЕ в MSAccess

#sql #database #ms-access

#sql #База данных #ms-access

Вопрос:

В MSAccess у меня есть таблица со столбцом

 1 Col1, Col2, Col3, Col4. 
  

Я хочу сделать этот столбец в виде строк, как показано ниже, используя SQL-запрос, предпочтительно используя СВОДНОЕ ПРЕОБРАЗОВАНИЕ. Любая помощь приветствуется!

 1 Col1,
2 Col2
3 Col3
4 Col4  
  

Ответ №1:

Вам нужно использовать запрос UNION или ОБЪЕДИНИТЬ ВСЕ:

 Select 1, Col1 From MyTable
Union All
Select 2, Col2 From MyTable
Union All
Select 3, Col3 From MyTable
Union All
Select 4, Col4 From MyTable
  

Объединение All вернет строки из каждой таблицы, даже если при этом будут созданы дубликаты. Объединение эффективно сгруппирует результаты вместе, чтобы вы могли создавать уникальные строки с минимальными затратами на производительность.

Комментарии:

1. Спасибо, Томас. Есть ли какие-либо проблемы с производительностью, если я использую объединение? Есть ли у вас какие-либо идеи о применении поворота в этом случае?

2. @Vin — Зависит от объема данных. Для большинства систем разница в производительности не будет существенной, однако, если таблица очень большая (так что вы объединяете много данных вместе), это может иметь значение. Реальный вопрос заключается в том, нужно ли вам не иметь дубликатов и возможны ли дубликаты. Если это верно, то использование объединения является правильным ответом.

3. Что касается дубликатов, UNION ALL включает их, UNION удаляет их (и для возврата результатов потребуется больше времени). Что касается вопроса производительности в целом, если все, что вы делаете, это возвращаете результаты в форме или отчете, на самом деле их нет. Но если вы хотите применить предложение WHERE к совокупному набору, то у вас есть узкое место в производительности, поскольку индексы не могут быть использованы. В этом случае вам было бы лучше использовать предложение WHERE, которое проверяет все четыре поля (с OR ).