Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
如何在SQLServer2008R2中使用pivot获取列中的行数据和行中的列数据_Sql_Sql Server - Fatal编程技术网

如何在SQLServer2008R2中使用pivot获取列中的行数据和行中的列数据

如何在SQLServer2008R2中使用pivot获取列中的行数据和行中的列数据,sql,sql-server,Sql,Sql Server,从存储过程中获得的当前结果: 当前结果的预期结果: 没有产品定义为三天制 下面的代码显示相同的结果,以使DayToManufacture值成为列标题。即使结果为空,也会提供三[3]天的列 --一行五列透视表 SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, [0], [1], [2], [3], [4] FROM (SELECT DaysToManufacture, StandardCost FROM Producti

从存储过程中获得的当前结果:

当前结果的预期结果:

没有产品定义为三天制

下面的代码显示相同的结果,以使DayToManufacture值成为列标题。即使结果为空,也会提供三[3]天的列

--一行五列透视表

SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, 
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost 
    FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
这是结果集

Cost_Sorted_By_Production_Days    0         1         2           3       4       
AverageCost                       5.0885    223.88    359.1082    NULL    949.4105
只有图像才能回答只有图像的问题

试试这个

用枢轴连接所有部件

我的例子是:

DECLARE 
@v_Columns VARCHAR(MAX),
@v_StartDate DATETIME = '09/15/2015',
@v_EndDate DATETIME = '12/15/2020',
@v_Query VARCHAR(MAX)

SELECT @v_Columns = COALESCE(@v_Columns,'[') + convert(varchar, Date, 101) + '],[' 
FROM 
(SELECT DISTINCT Date FROM view_wc_sessions_info) th
WHERE
th.Date BETWEEN @v_StartDate AND @v_EndDate

SET @v_Columns = SUBSTRING(@v_Columns, 1, LEN(@v_Columns)-2)

SET @v_Query = 

'SELECT
*
FROM
(
 select [Total], Date, fk_student_rcid
  from view_WC_SESSIONS_Info th
WHERE
th.Date BETWEEN ''' + CONVERT(VARCHAR(50), @v_StartDate, 101) + '''
AND ''' + CONVERT(VARCHAR(50), @v_EndDate, 101) + '''
) src
PIVOT
(
COUNT(src.[Total])
FOR src.Date IN (' + @v_Columns + ')
) AS pivotview'

EXEC(@v_Query)

我已经看到了只链接的答案,一个只链接的问题是新的。请编辑你的问题来描述你的问题,描述你的模式,显示你的代码和示例数据哦,伙计,我懒散了=)一张有要求的纸的照片,这必须是第一次。现在我想象你拍了一张最适合你的答案的照片,以便在工作中打字=)。无论如何,德国劳埃德船级社!你有没有做过与场景相关的查询..那么请分享一下
declare @table table
(period nvarchar(10),num int,cost int,value int)
insert into @table
select 'Jan-16',1,100,100 
union all select 'Feb-16',2,200,200 
union all select 'Mar-16',3,300,300
union all select 'Apr-16',4,400,400 
union all select 'May-16',5,500,500 
union all select 'Jun-16',6,600,600 
union all select 'Jul-16',7,700,700 
union all select 'Aug-16',8,800,800 
union all select 'Sep-16',9,900,900 
union all select 'Oct-16',10,1000,1000 
union all select 'Nov-16',11,1100,1100 
union all select 'Dec-16',12,1200,1200 


--select * from @table 

select 'No of Order' as Period,[Jan-16], [Feb-16],[Mar-16],[Apr-16],[May-16],[Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16],[Dec-16]
from 
(
select period,num from @table) u 
pivot  ( sum(num) for period in ([Jan-16] ,[Feb-16],[Mar-16],[Apr-16], [May-16], [Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16], [Dec-16]))
as pvt

union all
select 'Cost Of Order' as Period,[Jan-16], [Feb-16],[Mar-16],[Apr-16],[May-16],[Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16],[Dec-16]
from 
(
select period,cost from @table) u 
pivot  ( sum(Cost) for period in ([Jan-16] ,[Feb-16],[Mar-16],[Apr-16], [May-16], [Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16], [Dec-16]))
as pvt

union all
select 'Value Of Order' as Period,[Jan-16], [Feb-16],[Mar-16],[Apr-16],[May-16],[Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16],[Dec-16]
from 
(
select period,value from @table) u 
pivot  ( sum(value) for period in ([Jan-16] ,[Feb-16],[Mar-16],[Apr-16], [May-16], [Jun-16],[Jul-16],[Aug-16],[Sep-16],[Oct-16],[Nov-16], [Dec-16]))
as pvt
DECLARE 
@v_Columns VARCHAR(MAX),
@v_StartDate DATETIME = '09/15/2015',
@v_EndDate DATETIME = '12/15/2020',
@v_Query VARCHAR(MAX)

SELECT @v_Columns = COALESCE(@v_Columns,'[') + convert(varchar, Date, 101) + '],[' 
FROM 
(SELECT DISTINCT Date FROM view_wc_sessions_info) th
WHERE
th.Date BETWEEN @v_StartDate AND @v_EndDate

SET @v_Columns = SUBSTRING(@v_Columns, 1, LEN(@v_Columns)-2)

SET @v_Query = 

'SELECT
*
FROM
(
 select [Total], Date, fk_student_rcid
  from view_WC_SESSIONS_Info th
WHERE
th.Date BETWEEN ''' + CONVERT(VARCHAR(50), @v_StartDate, 101) + '''
AND ''' + CONVERT(VARCHAR(50), @v_EndDate, 101) + '''
) src
PIVOT
(
COUNT(src.[Total])
FOR src.Date IN (' + @v_Columns + ')
) AS pivotview'

EXEC(@v_Query)