Пользователь
Сообщений: ]]>156]]>
Баллов: 125
Регистрация: 04.02.2011
|
Есть несколько столбцов с аналогичным типом данных внутри, как их соединить?
Т.е. примерно так |квартал 1| квартал 2| квартал 3| квартал 4| | 1000 | 200 | 700 | 5000 | | 450 | 560 |800 | 2000 | | 800 | 500 | 700 | 1000 | а нужно |количество| квартал| | 1000 | 1 | | 450 | 1 | | 800 | 1 | | 200 | 2 |
и так далее
Создать столбец "квартал" мне удалось, а вот заполнить столбец "количество" не получается.
|
|
|
Пользователь
Сообщений: ]]>156]]>
Баллов: 125
Регистрация: 04.02.2011
|
Код |
---|
INSERT INTO tableNew (количество, квартал)
SELECT [квартал 1] AS количество, 1 AS квартал FROM TABLE
UNION all
SELECT [квартал 2] AS количество, 2 AS квартал FROM TABLE
UNION all
SELECT [квартал 3] AS количество, 3 AS квартал FROM TABLE
UNION all
SELECT [квартал 4] AS количество, 4 AS квартал FROM TABLE
|
|
|
|
Пользователь
Сообщений: ]]>156]]>
Баллов: 125
Регистрация: 04.02.2011
|
А можно ли как-то обойтись одним select'ом? Дело в том, что таблица настолько громоздка, что если для каждого столбца делать отдельный запрос, то он будет размером с 5 страниц а4.
|
|
|
Пользователь
Сообщений: ]]>156]]>
Баллов: 125
Регистрация: 04.02.2011
|
DECLARE @T TABLE([квартал 1] INT, [квартал 2] INT, [квартал 3] INT, [квартал 4] INT); INSERT @T([квартал 1], [квартал 2], [квартал 3], [квартал 4]) SELECT 1000, 200, 700, 5000 UNION ALL SELECT 450, 560, 800, 2000 UNION ALL SELECT 800, 500, 700, 1000;
SELECT [количество], [квартал] FROM (SELECT [квартал 1], [квартал 2], [квартал 3], [квартал 4] FROM @T) P UNPIVOT ([количество] FOR [квартал] IN ([квартал 1], [квартал 2], [квартал 3], [квартал 4])) U ORDER BY [квартал];
|
|
|
Пользователь
Сообщений: ]]>156]]>
Баллов: 125
Регистрация: 04.02.2011
|
можно и так попробовать Код |
---|
SET NOCOUNT ON;
DECLARE @T TABLE([квартал 1] INT, [квартал 2] INT, [квартал 3] INT, [квартал 4] INT);
INSERT @T([квартал 1], [квартал 2], [квартал 3], [квартал 4])
SELECT 1000, 200, 700, 5000
UNION ALL SELECT 450, 560, 800, 2000
UNION ALL SELECT 800, 500, 700, 1000;
SELECT
CASE Columns.[квартал]
WHEN 1 THEN T.[квартал 1]
WHEN 2 THEN T.[квартал 2]
WHEN 3 THEN T.[квартал 3]
WHEN 4 THEN T.[квартал 4]
END [количество],
Columns.[квартал]
FROM @T T
CROSS JOIN (SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) Columns([квартал])
ORDER BY Columns.[квартал]; |
|
|
|
|
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
|
]]>
]]>
]]>
]]>
|