У меня есть несколько статических таблиц с многочисленными столбцами.Все они имеют одну общую колонку.Я хотел бы переставить каждую из этих таблиц так, чтобы имена столбцов становились строками, значения столбцов становились строками и чтобы был один «общий» столбец.Например:
+---------+---+------+-----+---------+-----+
| Table 1 | | x1 | x2 | x3 | x4 |
+---------+---+------+-----+---------+-----+
| | 1 | 5 | 4 | alpha | 6 |
| | 2 | 5 | 1 | alpha | 5 |
| | 3 | 8 | 4 | alpha | 6 |
| | 4 | 0 | 8 | Beta | 1 |
| | 5 | 10 | 3 | Beta | 5 |
| | 6 | 3 | 6 | Beta | 4 |
| | … | … | … | … | … |
+---------+---+------+-----+---------+-----+
+---------+---+-----+-----+---------+
| Table 2 | | y1 | y2 | x3 |
+---------+---+-----+-----+---------+
| | 1 | 2 | 7 | Alpha |
| | 2 | 1 | 4 | Beta |
| | … | … | … | … |
+---------+---+-----+-----+---------+
+--------------+----+---------+------------+--------------+--------------+
| RESULT TABLE | | x3 | Field Name | Column Value | Source Table |
+--------------+----+---------+------------+--------------+--------------+
| | 1 | Alpha | x1 | 5 | Table 1 |
| | 2 | Alpha | x2 | 4 | Table 1 |
| | 3 | Alpha | x4 | 6 | Table 1 |
| | 4 | Alpha | x1 | 5 | Table 1 |
| | 5 | Alpha | x2 | 1 | Table 1 |
| | 6 | Alpha | x4 | 5 | Table 1 |
| | 7 | Alpha | x1 | 8 | Table 1 |
| | 8 | Alpha | x2 | 4 | Table 1 |
| | 9 | Alpha | x4 | 6 | Table 1 |
| | 10 | Beta | x1 | 0 | Table 1 |
| | 11 | Beta | x2 | 8 | Table 1 |
| | 12 | Beta | x4 | 1 | Table 1 |
| | 13 | Beta | x1 | 10 | Table 1 |
| | 14 | Beta | x2 | 3 | Table 1 |
| | 15 | Beta | x4 | 5 | Table 1 |
| | 16 | Beta | x1 | 3 | Table 1 |
| | 17 | Beta | x2 | 6 | Table 1 |
| | 18 | Beta | x4 | 4 | Table 1 |
| | 19 | Alpha | y1 | 2 | Table 2 |
| | 20 | Alpha | y2 | 7 | Table 2 |
| | 21 | Beta | y1 | 1 | Table 2 |
| | 22 | Beta | y2 | 4 | Table 2 |
| | … | … | … | … | … |
+--------------+----+---------+------------+--------------+--------------+
В приведенном выше примере x3 - это общий столбец, который я хотел бы сохранить.Все остальные столбцы превращаются в строки с соответствующими значениями.
Возможно ли это вообще в SQL-доступе?Я новичок и не могу найти решение, так как мне нужно сначала объединить два tbales, а затем как-то повернуть его, за исключением столбца x3.
Выше приведен только пример, в действительности каждая таблица может иметь многостолбцы, поэтому я хотел бы попробовать сделать это динамически для любого количества столбцов
РЕДАКТИРОВАТЬ:
Я предложил динамическое решение.Я могу использовать VBA для создания запроса:
select x3 as x3, x1 as [field name], [x1] as [column value], 'Table 1' as [Source Table]
UNION ALL
select x3 as x3, x2 as [field name], [x2] as [column value], 'Table 1' as [Source Table]
...
Это позволит получить первую таблицу в правильном формате.
Затем я могу повторить для второй таблицы и объединить оба, чтобы получить результат.
Однако на практике в моих таблицах много столбцов, поэтому эта строка запроса очень быстро становится очень большой, и, к сожалению, Microsoft Access не может обрабатывать длинные строки SQL, поэтому выдает ошибку, что запрос слишком сложен.Не вижу другого обходного пути ...