表MMM
RouteCode RouteName DriveDate Tim ShapeCode Amount 11 12 13 14 15 16 17
3 a店 2007/10/7 2 11 65 null null null null null null
3 a店 2007/10/7 2 13 65 null null null null null null
3 a店 2007/10/7 2 15 10 null null null null null null
4 b店 2007/10/7 1 15 5 null null null null null null
4 b店 2007/10/7 1 13 5 null null null null null null
4 b店 2007/10/7 1 11 5 null null null null null null
5 c店 2007/10/7 1 11 15 null null null null null null
5 c店 2007/10/7 1 13 15 null null null null null null
5 c店 2007/10/7 1 15 15 null null null null null null
3 a店 2007/10/8 1 11 10 null null null null null null
4 b店 2007/10/8 1 11 11 null null null null null null
变成
RouteCode RouteName DriveDate Tim 11 12 13 14 15 16 17
3 a店 2007/10/7 2 65 0 65 0 10 0 0
4 b店 2007/10/7 1 5 0 5 0 5 0 0
5 c店 2007/10/7 1 15 15 0 15 0 15 0
3 a店 2007/10/8 1 10 10 0 0 0 0 0
4 b店 2007/10/8 1 11 11 0 0 0 0 0
这些数据都是从别的表里转过来的,也就是说原表里面有什么样的ShapeCode类型的Amount就把他们转到后面的11 12列中,没有就
显示0,实现不了显示空也可以。我已经实现了从原表里面面动态的提取ShapeCode和Amount
现在就是把MMM表中的ShapeCode和Amount也那样实现。
他们说是这样实现,把ShapeCode赋给变量,然后用Max语句查找后面相应的列,然后填入Amount我捉摸到现在也没有个头绪。
神阿,救救我把
RouteCode RouteName DriveDate Tim ShapeCode Amount 11 12 13 14 15 16 17
3 a店 2007/10/7 2 11 65 null null null null null null
3 a店 2007/10/7 2 13 65 null null null null null null
3 a店 2007/10/7 2 15 10 null null null null null null
4 b店 2007/10/7 1 15 5 null null null null null null
4 b店 2007/10/7 1 13 5 null null null null null null
4 b店 2007/10/7 1 11 5 null null null null null null
5 c店 2007/10/7 1 11 15 null null null null null null
5 c店 2007/10/7 1 13 15 null null null null null null
5 c店 2007/10/7 1 15 15 null null null null null null
3 a店 2007/10/8 1 11 10 null null null null null null
4 b店 2007/10/8 1 11 11 null null null null null null
变成
RouteCode RouteName DriveDate Tim 11 12 13 14 15 16 17
3 a店 2007/10/7 2 65 0 65 0 10 0 0
4 b店 2007/10/7 1 5 0 5 0 5 0 0
5 c店 2007/10/7 1 15 15 0 15 0 15 0
3 a店 2007/10/8 1 10 10 0 0 0 0 0
4 b店 2007/10/8 1 11 11 0 0 0 0 0
这些数据都是从别的表里转过来的,也就是说原表里面有什么样的ShapeCode类型的Amount就把他们转到后面的11 12列中,没有就
显示0,实现不了显示空也可以。我已经实现了从原表里面面动态的提取ShapeCode和Amount
现在就是把MMM表中的ShapeCode和Amount也那样实现。
他们说是这样实现,把ShapeCode赋给变量,然后用Max语句查找后面相应的列,然后填入Amount我捉摸到现在也没有个头绪。
神阿,救救我把
RouteCode RouteName DriveDate Tim ShapeCode Amount 11 12 13 14 15 16 17
3 a店 2007/10/7 2 11 65 null null null null null null
3 a店 2007/10/7 2 13 65 null null null null null null
3 a店 2007/10/7 2 15 10 null null null null null null
4 b店 2007/10/7 1 15 5 null null null null null null
4 b店 2007/10/7 1 13 5 null null null null null null
4 b店 2007/10/7 1 11 5 null null null null null null
5 c店 2007/10/7 1 11 15 null null null null null null
5 c店 2007/10/7 1 13 15 null null null null null null
5 c店 2007/10/7 1 15 15 null null null null null null
3 a店 2007/10/8 1 11 10 null null null null null null
4 b店 2007/10/8 1 11 11 null null null null null null
变成
RouteCode RouteName DriveDate Tim 11 12 13 14 15 16 17
3 a店 2007/10/7 2 65 0 65 0 10 0 0
4 b店 2007/10/7 1 5 0 5 0 5 0 0
5 c店 2007/10/7 1 15 15 0 15 0 15 0
3 a店 2007/10/8 1 10 10 0 0 0 0 0
4 b店 2007/10/8 1 11 11 0 0 0 0 0
这些数据都是从别的表里转过来的,也就是说原表里面有什么样的ShapeCode类型的Amount就把他们转到后面的11 12列中,没有就
显示0,实现不了显示空也可以。我已经实现了从原表里面面动态的提取ShapeCode和Amount
现在就是把MMM表中的ShapeCode和Amount也那样实现。
他们说是这样实现,把ShapeCode赋给变量,然后用Max语句查找后面相应的列,然后填入Amount我捉摸到现在也没有个头绪。
神阿,救救我把
如果只是去掉null为0:isnull(列名,0)
--
转到后面的11 12update 表
set [11]=amount,[12]=amount
select RouteCode,RouteName,DriveDate,Tim,
sum(case shapecode when 11 then amount else 0 end) [11],
sum(case shapecode when 12 then amount else 0 end) [12],
sum(case shapecode when 13 then amount else 0 end) [13],
sum(case shapecode when 14 then amount else 0 end) [14],
sum(case shapecode when 15 then amount else 0 end) [15],
sum(case shapecode when 16 then amount else 0 end) [16],
sum(case shapecode when 17 then amount else 0 end) [17]
from mmm
group by RouteCode,RouteName,DriveDate,Tim
declare @sql varchar(8000)
set @sql = 'select RouteCode,RouteName,DriveDate,Tim'
select @sql = @sql + ' , sum(case shapecode when ''' + cast(shapecode as varchar) + ''' then amount else 0 end) [' + cast(shapecode as varchar) + ']'
from (select distinct shapecode from mmm) as a
set @sql = @sql + ' from mmm group by RouteCode,RouteName,DriveDate,Tim'
exec(@sql)
--动态SQL,转换成了下面的
RouteCode RouteName DriveDate Tim 11 13 15
3 a店 2007-10-05 00:00:00.000 2 65 65 10
3 a店 2007-10-06 00:00:00.000 1 10 0 0
4 b店 2007-10-05 00:00:00.000 1 5 5 5
4 b店 2007-10-06 00:00:00.000 1 11 0 0
5 c店 2007-10-05 00:00:00.000 1 15 15 15
但是后面的12,14,16,17没有了,又没有办法让他们带着显示空值而不用--静态SQL的方法。
不能实现的话也没有关系,我想做到这个程度,我的技术担当也不会太为难我,只要我每天都能学到东西就行啊
谢谢潇洒!
RouteCode DriveDate Tim 11 13 15
3 2007-10-05 00:00:00.000 2 65 65 10
3 2007-10-06 00:00:00.000 1 10 0 0
4 2007-10-05 00:00:00.000 1 5 5 5
4 2007-10-06 00:00:00.000 1 11 0 0
5 2007-10-05 00:00:00.000 1 15 15 15
动态填到
空表B 没有数据显示空 ,无主键
RouteCode DriveDate Tim 11 12 13 14 15 16 17
代码
declare @s varchar(4000)
set @s = ''--'select '
select @s = @s + '['+ rtrim(ltrim(name)) +']'+ ',' from dbo.syscolumns where id = 476580786
set @s = left(@s,len(@s)-1)
declare @strSql varchar(2000)
set @strSql = ' insert into MstDeliveryShape13 ( '+ @s + ' ) select ' + @s +' from bbb'
print @strSql
exec (@strSql)执行时,出现列11 13 15 列名无效。列名怎么解决,有没有其他办法动态的插入数据