sql语句该怎么写?

补充怎么成这效果了?
现在把问题重新发下。。。。。。。。。。。。。。。。。。。。。。。。。。。

表1:id 产品型号 数量 库房
1 a-f 2 k1
2 a-f 1 k2
3 b-f 1 k3
4 b-f 2 k3
5 a-f 5 k2
结果:
型号:k1 k2 k3 总数量
a-f 2 6 0 8
b-f 0 0 3 3

补充:
表2:id 产品型号 数量 库房
1 a-f 1 k1
2 b-f 2 k2
3 a-f a k3

前面结果:型号:k1 k2 k3 总数量
a-f 2 6 0 8 k1-1 k3-1
b-f 0 0 3 3 k2-2
最后结果:
型号:k1 k2 k3 总数量
a-f 1 6 -1 8
b-f 0 -2 3 3

不好意思前面没说清楚
可以后一定追分 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

[b]问题补充:[/b]
补充怎么成这效果了?
现在把问题重新发下。。。。。。。。。。。。。。。。。。。。。。。。。。。

表1:id 产品型号 数量 库房
1 a-f 2 k1
2 a-f 1 k2
3 b-f 1 k3
4 b-f 2 k3
5 a-f 5 k2
结果:
型号:k1 k2 k3 总数量
a-f 2 6 0 8
b-f 0 0 3 3

补充:
表2:id 产品型号 数量 库房
1 a-f 1 k1
2 b-f 2 k2
3 a-f a k3

前面结果:型号:k1 k2 k3 总数量
a-f 2 6 0 8 k1-1 k3-1
b-f 0 0 3 3 k2-2
最后结果:
型号:k1 k2 k3 总数量
a-f 1 6 -1 8
b-f 0 -2 3 3

不好意思前面没说清楚
可以后一定追分 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

[b]问题补充:[/b]
补充怎么成这效果了?
现在把问题重新发下。。。。。。。。。。。。。。。。。。。。。。。。。。。

表1:id 产品型号 数量 库房
1 a-f 2 k1
2 a-f 1 k2
3 b-f 1 k3
4 b-f 2 k3
5 a-f 5 k2
结果:
型号:k1 k2 k3 总数量
a-f 2 6 0 8
b-f 0 0 3 3

补充:
表2:id 产品型号 数量 库房
1 a-f 1 k1
2 b-f 2 k2
3 a-f a k3

前面结果:型号:k1 k2 k3 总数量
a-f 2 6 0 8 k1-1 k3-1
b-f 0 0 3 3 k2-2
最后结果:
型号:k1 k2 k3 总数量
a-f 1 6 -1 8
b-f 0 -2 3 3

不好意思前面没说清楚
可以后一定追分 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

sqlserver2005 不认识decode函数啊

[code="sql"]
SELECT A.型号, A.K1 - B.K1, A.K2 - B.K2, A.K3 - B.K3, A.数量
(SELECT 型号,
SUM(DECODE(库房,'k1',数量,0)) K1,
SUM(DECODE(库房,'k2',数量,0)) K2,
SUM(DECODE(库房,'k3',数量,0)) K3,
SUM(数量) 数量
FROM 表1
GROUP BY 型号) A,
(SELECT 型号,
SUM(DECODE(库房,'k1',数量,0)) K1,
SUM(DECODE(库房,'k2',数量,0)) K2,
SUM(DECODE(库房,'k3',数量,0)) K3,
SUM(数量) 数量
FROM 表2
GROUP BY 型号) B,
WHERE A.型号 = B.型号
ORDER BY A.型号
[/code]

用DECODE行转列:
[code="sql"]
SELECT SUM(DECODE(库房,'k1',数量,0)),
SUM(DECODE(库房,'k2',数量,0)),
SUM(DECODE(库房,'k3',数量,0))
SUM(数量)
FROM 表
GROUP BY 型号
ORDER BY 型号
[/code]

不过前提是你库房必须是固定的

sqlserver2005 不认识decode函数啊

那就改成CASE子句呗