Столбцы как значения/Не-сводная таблица в SQL

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

У меня есть следующая таблица.

Таблица 1

ID 12/1 1/1 2/1
X 1 2 3
Y 4 5 6
Z 7 8 9

Мне нужна следующая таблица,

ID Дата Прогноз
X 12/1 1
X 1/1 2
X 2/1 3
Y 12/1 4
Y 1/1 5
Y 2/1 6
Z 12/1 7
Z 1/1 8
Z 2/1 9

Есть ли в любом случае, что я могу сделать это в SQL?

Любая помощь будет оценена по достоинству!

Заранее спасибо.

Комментарии:

1. В соответствии с руководством по вопросам, пожалуйста, покажите, что вы пробовали, и расскажите нам, что вы нашли (на этом сайте или где-либо еще) и почему это не соответствовало вашим потребностям.

2. То, что вам нужно, находится здесь, а не поворачивается.

3. Эти столбцы плохо спроектированы: у вас не должно быть данных в именах столбцов. Другими словами, ваш конечный результат-это то, какой должна была быть таблица в первую очередь

Ответ №1:

НЕПРИВЯЗАННЫЙ или подход со ЗНАЧЕНИЯМИ был бы более эффективным, НО, основываясь на именах ваших столбцов, я подозреваю, что со временем у вас будут переменные/расширяющиеся столбцы.

Вот подход, который будет динамически откреплять ваши данные без фактического использования динамического SQL или необходимости указывать столбцы (только те, которые следует исключить).

Пример

 Select A.ID  ,B.*   From YourTable A  Cross Apply (  Select Date = [Key]  ,Forecast = Value  From OpenJson((Select A.* For JSON Path,Without_Array_Wrapper,INCLUDE_NULL_VALUES ))   Where [Key] not in ('ID')  ) B  

Результаты

 ID Date Forecast X 12/1 1 X 1/1 2 X 2/1 3 Y 12/1 4 Y 1/1 5 Y 2/1 6 Z 12/1 7 Z 1/1 8 Z 2/1 9  

Комментарии:

1. Я удалил свой ответ, но это определенно правильный путь, если у вас есть какие-либо планы в отношении дополнительных имен столбцов.

2. Спасибо за это!

3. @Sai Всегда рад помочь