日期:2014-05-16  浏览次数:20577 次

如何把字段为每天日期转换成某年某月
假设我有一张表: 
region     CustomerName   MonthlyTotal        recordDate

Jiangsu         Restaurant          1220.00             2014-01-14
Jiangsu         Restaurant          150.00                     2014-01-19
Shanghai         Hotel                 2000.00          2012-10-11
Shanghai         Hotel                 200.00           2012-10-12
Shanghai         Hotel                 200.00              2012-11-12

我想查询出来的结果变成:
region     CustomerName   2014年一月      2012-10年十月         2012-10年十一月
Jiangsu    Restaurant                1370.00           null                          null
Shanghai         Hotel              null             2200.00                   200.00                 
我了解到pivot有透视功能。但我现在遇到的难题是何将recordDate里的一个月里的每一天时间记录最后转换成
某年某月并显示
------解决方案--------------------

WITH a1 (region,CustomerName,MonthlyTotal,recordDate) AS
(
SELECT 'Jiangsu','Restaurant',1220.00,'2014-01-14' UNION ALL
SELECT 'Jiangsu','Restaurant',150.00,'2014-01-19' UNION ALL
SELECT 'Shanghai','Hotel',2000.00,'2012-10-11' UNION ALL
SELECT 'Shanghai','Hotel',200.00,'2012-10-12' UNION ALL
SELECT 'Shanghai','Hotel',200.00,'2012-11-12'
)
,a2 AS
(
SELECT region,CustomerName,MonthlyTotal,CONVERT(char(7),recordDate,120) recordDate FROM a1
)
SELECT *
FROM a2 a
PIVOT (SUM(MonthlyTotal) FOR recordDate IN ([2014-01],[2012-10],[2012-11])) b
ORDER BY 1

------解决方案--------------------
有点忙,没空帮你改,这是例子,你调整一下吧
 
if not object_id('Class') is null
    drop table Class
Go
Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int)
Insert Class
select N'张三',N'语文',78 union all
select N'张三',N'数学',87 union all
select N'张三',N'英语',82 union all
select N'张三',N