Jerji Rani Ответов: 1

Изменение имени столбца на дату в 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 можно ли в моем случае использовать пользовательский интерфейс ?
Спасибо за вашу поддержку,

1 Ответов

Рейтинг:
11

Jerji Rani

Я решаю ее, ребята, спасибо Вам за вашу помощь.

хорошего дня.


Kornfeld Eliyahu Peter

И где же решение?

Jerji Rani

Я изменил структуру вывода теперь это похоже :
2017-06-21 сумма(ХХХ) сумма(ыыы) ....
2017-06-20 сумма(ХХХ) сумма(ыыы) ....