关于数视图中的数据行数据转换成列数据的问题
现在有一表v_Table(其实是从视图中读出的)数据如下:
Name Description Value
-----------------------------------------
Jear 到厂迟到1-3小时 5
Jear 空柜检查 7
Jear 及时返回柜号 10
Jear 空柜检查 3
陈师傅 到厂迟到1-3小时 5
陈师傅 及时准确到达 9
古月历 到厂迟到1-3小时 2
古月历 到达码头 5
------------------------------------------
现在要得到符合以下要求的数据表:
1、列名为:Name、DescriptionN(N:=1..n,代表上述Description中的个数据,每一个就作为一个列名)、Sum(是对每个Description的Sum(Value)运算,即对于每一个Name,其对应的Description所对应的Value的合计,作为该DescriptionN(N:=1..n)的一项数据),显示结果如下:
Name 到厂迟到1-3小时 空柜检查 及时返回柜号 及时准确到达 到达码头
Jear 5 10 10 0 0
陈师傅 5 0 0 9 0
古月历 2 0 0 0 5
这一个已实现:
--行数据转换成列名
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',['+rtrim(Description)+']=sum(case Descriptionwhen '''+rtrim(Description)+''' then Value else 0 end)'
from v_Table group by Description
--然后,查询
select @sql='Select Name,' +
@sql +
' From v_Table '+
' Group By Name'
-- ok query data by execute the sql command
Exec (@sql);
-- ok
2、列名为:Name、DescriptionN(N:=1..n,代表上述Description中的个数据,每一个就作为一个列名)、Count(是对每个Description的Count运算,即对于每一个Name,其对应的Description的个数,作为该DescriptionN(N:=1..n)的一项数据)
显示上述结果如下:
Name 到厂迟到1-3小时 空柜检查 及时返回柜号 及时准确到达 到达码头
Jear 1 2 1 0 0
陈师傅 1 0 0 1 0
古月历 1 0 0 0 1
现在要求用SQL来得到上述结果。
请教各位大虾
谢谢先