Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server复杂查询_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

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相同,这就是我的查询将执行的操作