sql server复杂查询
sql server复杂查询,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,第一个是源表,第二个是目标表,因此在第二个表中,使用unpivot将12个月的列转换为单列,并自动更新YTD字段。如果月份名称为“一月”,则表示年初至今字段仅显示一月数据;如果月份名称为“二月”,则表示将一月数据与二月数据相加。如果是12月,则相同意味着它将从同一行的1月添加到12月。只需单独选择所有月份,然后合并它们: select [ORU code], [BG Name], YEAR, 'Jan' as [Month], [Jan] as [KPI #], [Jan] as [YTD/I
第一个是源表,第二个是目标表,因此在第二个表中,使用unpivot将12个月的列转换为单列,并自动更新YTD字段。如果月份名称为“一月”,则表示年初至今字段仅显示一月数据;如果月份名称为“二月”,则表示将一月数据与二月数据相加。如果是12月,则相同意味着它将从同一行的1月添加到12月。只需单独选择所有月份,然后合并它们:
select [ORU code], [BG Name], YEAR, 'Jan' as [Month], [Jan] as [KPI #], [Jan]
as [YTD/ITM] from source_table
union all
select [ORU code], [BG Name], YEAR, 'Feb' as [Month], [Feb] as [KPI #], [Jan]+
[Feb] as [YTD/ITM] from source_table
union all
select ....
您得到了这样的想法看起来您需要的是按如下方式取消PIVOT:
Select *, [YTD] = sum(yourYTD calculation column) over(partition by [OruCode],[year] order by Month) from (
Select OruCode, BGName ---your required columns upto dec
from table1 t1 cross join table2 t2
)
unpivot (KPINo for [Month] in ([Jan],[Feb]...) ) p
使用交叉应用(值…
取消对数据的IVOT:
select
t.[oru code]
, t.[bg name]
, t.[bu name]
, t.[domain]
, t.KPI
, t.UoM
, t.[Year]
, t.[ACT/TARGET]
, v.[Month]
, v.KPI
, t.[YTD/ITM]
from t
cross apply (values
('Jan',Jan) ,('Feb',Feb) ,('Mar',Mar)
,('April',April) ,('May',May) ,('Jun',Jun)
,('Jul',Jul) ,('Aug',Aug) ,('Sep',Sep)
,('Oct',Oct) ,('Nov',Nov) ,('Dec',Dec)
) v ([Month],KPI)
与其提供图像,不如提供这些输入数据的文本,即您尝试过的内容以及您的问题是什么?对不起。。。我想不出这种需求有什么逻辑。这就是为什么我将其发布在staskoverflow中。取消Pivot后,我需要根据月份值更新YTD字段。表示累计总和。我的意思是,如果月份名称为jan,则它将更新YTD列中的jan-month值,如果月份名称为feb,则YTD列将更新jan-value+feb-value,与如果月份名称为May-than YTD=jan+feb+mar+apr+mayyep相同,这就是我的查询将执行的操作