SujataJK Ответов: 1

Как свернуть данные в соответствии с типом В SQL server


This is my data 

ACTUAL	BUDGET	TYPE
90	100	A
125	130	A		
100	110	B
100	222	B
150	150	B
 And i want like this 

A_BUDG	B_BUDG A_ACT B_ACT
100	110	90	100
130	222	125	100
	150	        150

здесь A_BUDG для бюджета и A_ACT для фактического
Пожалуйста, дайте мне предложение.

Что я уже пробовал:

это мой sql qry для первого
SELECT R.* FROM
(
select D.ACTUAL,D.BUDGET,'A' AS TYPE from  RENT_T_PARKING_HDR H
left join RENT_T_PARKING_DTL D ON H.VOUCHERNO=D.VOUCHERNO
WHERE TIMEFROM BETWEEN 3 AND 4 AND TIMETO BETWEEN  3 AND 4

UNION

select D.ACTUAL,D.BUDGET,'B' AS TYPE from  RENT_T_PARKING_HDR H
left join RENT_T_PARKING_DTL D ON H.VOUCHERNO=D.VOUCHERNO
WHERE TIMEFROM BETWEEN 1 AND 2 AND TIMETO BETWEEN  1 AND 2

)R GROUP BY R.TYPE,R.ACTUAL, R.BUDGET ORDER BY TYPE


и нужна помощь для желаемого результата

Herman<T>.Instance

Есть много решений, которые можно найти в разделах статьи CP:

Как у меня: https://www.codeproject.com/Articles/201320/Dynamic-Pivoting-with-Cubes-and-eventhandlers-in-S

1 Ответов

Рейтинг:
2

MadMyche

SQL server имеет PIVOT функция, которая "сглаживает" строки данных в столбцы. Синтаксис для оператора имеет по крайней мере один отменено столбцы, а затем несколько столбцов, которые являются поворотный исходя из этого (колонка без названия).

@digimanus есть статья о том, как создать Динамический Поворотный который использует данные CUBE для более сложных запросов, которые могут потребоваться с некоторыми наборами данных.

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

Рекомендации
MSDN: Использование PIVOT и UNPIVOT - SQL Server | Microsoft Docs[^]

Статья Digimanus: Динамическое вращение с помощью кубов и обработчиков событий в SQL Server 2005, 2008 и 2008 R2[^]


SujataJK

Спасибо @MadMyche

На самом деле в моем случае видно, что я должен сравнить данные отчета между 2 датами
например, 1) Выберите фактический,бюджетный из таблицы, где dt между dt1 и dt2
--Это моя пятерка.
И 2) Выберите фактический,бюджетный из таблицы, где dt между dt1 и dt2
-- Это мой Б
Теперь требование такое - сравнить эти 2 набора данных (A & B)
И вычислить разницу в сумме между (фактическое значение A - фактическое значение B), а также вычислить дисперсию в процентах

напр.
Очень Экономичный A_Actual B_Actual Отклонений
100 120 100 20
150 100 150 -50

MadMyche

Схема и данные для обеих таблиц были бы полезны для визуализации того, как это сочетается