Изменение имени столбца на дату в SQL server
Уважаемая Мадам / Сэр,
Хороший день,
У меня есть таблица с 11 столбцами, и я хочу изменить имя столбца 10 из них на вчерашнюю дату - до вчерашней даты ... и т. д
структура таблицы такова :
-------------------------------------------------------------------------------------
имя / колонка 1 / / колонка 2 | / колонка 3 | / колонка 4 | / колонка 5 | / колонка 6 |
-------------------------------------------------------------------------------------
var1| 159 | | 200 | | 300 | | 179 | | 410 | | 999 |
П. С. В структуру таблицы после запроса запустите ниже :
SELECT DISTINCT case Name when '123' then 'var1' when else name end as name, sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -1, GETDATE()) as date) THEN cast (ta.VALUE as float) ELSE 0 END) as getdate , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -2, GETDATE()) as date) THEN cast (ta.VALUE as float) ELSE 0 END), sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -3, GETDATE()) as date) THEN cast (ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -4, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -5, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -6, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -7, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -8, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -9, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) , sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -10, GETDATE()) as date) THEN cast (Ta.VALUE as float) ELSE 0 END) FROM tabel name GROUP BY name
Что я уже пробовал:
результат сейчас
-------------------------------------------------------------------------------------
имя / колонка 1 / / колонка 2 | / колонка 3 | / колонка 4 | / колонка 5 | / колонка 6 |
-------------------------------------------------------------------------------------
var1| 159 | | 200 | | 300 | | 179 | | 410 | | 999 |
и то, что мы ожидаем, это :
------------------------------------------------------------------------------------------------------
имя| 20/6/2017 | | 19/6/2017 | | 18/6/2017 | | 17/6/2017 | | 16/6/2017 | | 15/6/2017 |
------------------------------------------------------------------------------------------------------
var1| 159 | | 200 | | 300 | | 179 | | 410 | | 999 |
Я попытался создать varible
declare @1 date = DATEADD(dd, -1, GETDATE())
и сделайте результат этой переменной в виде имени столбца
sum(CASE WHEN cast (dbo.fa_ConvertToDateTime(TIMESTAMP_S) as date) = cast (DATEADD(dd, -2, GETDATE()) as date) THEN cast (ta.VALUE as float) ELSE 0 END) as (Select @1),
Я считаю, что это неправильно, и я не мог найти способ сделать это.
заранее спасибо.
хорошего дня,
Andy Lanng
Я думаю, что ваш лучший вариант-использовать pivot :
Использование PIVOT и UNPIVOT[^]
Jerji Rani
Спасибо за вашу помощь , не могли бы вы показать мне пример, подобный моему коду?
спасибо.
Jerji Rani
Я пишу этот код на SQL и перемещаю его в программное обеспечение dashboard, чтобы нарисовать его и только с помощью этого способа ( более одного столбца ) Я могу нарисовать карту.
спасибо.
Kornfeld Eliyahu Peter
1. после того как вы можете использовать только литералы...
2. оставьте SQL в стороне... Как и для пользовательского интерфейса, сделайте это в пользовательском интерфейсе
Jerji Rani
Спасибо за вашу поддержку,
Остро я пишу этот код на SQL и перемещаю его в программное обеспечение dashboard, чтобы нарисовать его charts.is можно ли в моем случае использовать пользовательский интерфейс ?
Спасибо за вашу поддержку,