如何在SQLServer2008R2中使用pivot获取列中的行数据和行中的列数据
从存储过程中获得的当前结果: 当前结果的预期结果: 没有产品定义为三天制 下面的代码显示相同的结果,以使DayToManufacture值成为列标题。即使结果为空,也会提供三[3]天的列 --一行五列透视表如何在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
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)