我有一个表A如下:
工令 制程 时间 ……
123 S 1
456 P 2
123 W 3
123 P 1.5
123 S 2.0
……
===========================
另外一个表B为:
工令 S时间 P时间 W时间 ……
123
456
……
===========================
想请问各位大侠,怎样写一存储过程,更新B表的数据,其中B表的S时间为,A表中想同工令的制程为S的时间之和,P时间为制程为P的时间之和??急啊,大哥大姐们帮忙啊!
(按要求上面的表更新后,B表应为):
工令 S时间 P时间 W时间
123 3.0 1.5 3
456 0 2 0
工令 制程 时间 ……
123 S 1
456 P 2
123 W 3
123 P 1.5
123 S 2.0
……
===========================
另外一个表B为:
工令 S时间 P时间 W时间 ……
123
456
……
===========================
想请问各位大侠,怎样写一存储过程,更新B表的数据,其中B表的S时间为,A表中想同工令的制程为S的时间之和,P时间为制程为P的时间之和??急啊,大哥大姐们帮忙啊!
(按要求上面的表更新后,B表应为):
工令 S时间 P时间 W时间
123 3.0 1.5 3
456 0 2 0
楼上的行列转换怎么转换啊,能不能说的清楚点,谢谢!
另外我的A表中的记录应该在一万条左右,要行列转换会不会很慢啊???
SELECT
@s1 = '',
@s2 = ''
SELECT
@s1 = @s1 + ',' + fd + '=B.' + fd,
@s2 = @s2 + ',' + fd + '=SUM(CASE 制程 WHEN ' + value + ' THEN 时间 END)'
FROM(
SELECT
fd = QUOTENAME(制程 + '时间'),
value = QUOTENAME(制程, '''')
FROM(
SELECT DISTINCT 制程 FROM 表A
)AA
)A
SELECT
@s1 = STUFF(@s1, 1, 1, '')
EXEC('
UPDATE B SET ' + @s1 + '
FROM 表B B,(
SELECT 工令' + @s2 + '
FROM 表A
GROUP BY 工令
)A
WHERE A.工令 = B.工令
')