2016-01-18 2 views
0

У меня возникла проблема с запросом Microsoft SQL. Я хотел бы добавить столбцы из результата запроса в каждую specfic строку.Строки результатов SQL SQL для столбцов

SQL:

CREATE TABLE #TempResult 
(
    rok int, nazev varchar(500), kod int, JNC float, JPC float, CNC float, CPC float, ObchPriraz float, Marze float, vynos float 
) 
INSERT #TempResult Exec pOlapData 133,1,0,'' 
SELECT rok,nazev,JNC FROM #TempResult 

DROP TABLE #TempResult 

Это результат:

This is the Result

И моя цель состоит в том, чтобы добавить столбцы (возможно создать другую временную таблицу): JNC 2013, JNC 2014, JNC 2015 ... к каждой строке с тем же именем из каждого года.

Ожидаемый результат:

 name    | JNC 2013 | JNC 2014 | JNC 2015 
    -------------------------------------------------------------- 
    name of the firm  number  number  number 
+1

Если у вас есть фиксированное количество ожидаемых столбцов года JNC, чем будет работать простой чип SQL. Если вы ожидаете переменное количество столбцов, вам нужно будет использовать динамический SQL. –

+0

Это фиксированное число 4. Не могли бы вы помочь мне с «поворотным»? или показать пример? Я был бы признателен :) – user3540118

+0

Посмотрите мой ответ ниже. Предполагается, что «название фирмы» - это столбец «назев». –

ответ

1

Вот чистый SQL стержень запрос, который даст вам результат вы хотите. Предполагается, что у вас есть 4 фиксированных столбца с 2013 года до 2016 года, и в том числе 2016. Конечно, вы можете изменить это, чтобы соответствовать вашим точным потребностям.

SELECT nazev AS name, 
    SUM(CASE WHEN rok = 2013 THEN JNC ELSE 0 END) AS 'JNC 2013', 
    SUM(CASE WHEN rok = 2014 THEN JNC ELSE 0 END) AS 'JNC 2014', 
    SUM(CASE WHEN rok = 2015 THEN JNC ELSE 0 END) AS 'JNC 2015', 
    SUM(CASE WHEN rok = 2016 THEN JNC ELSE 0 END) AS 'JNC 2016' 
FROM #TempResult 
GROUP BY nazev 
+1

Большое спасибо. Он работает отлично. Теперь я могу двигаться дальше и модифицировать его для своих нужд :) Еще раз спасибо. – user3540118

Смежные вопросы