首页新闻找找看学习计划

sql动态列传行

0
悬赏园豆:20 [已解决问题] 解决于 2015-05-23 18:51

要显示的结果是这样的

数据库大致是这样的

比如说 2月14日没有消耗混凝土就不会有数据记录

但2月15日消耗了 就会有记录  然后我就不会了  求帮助

阿哈太阳的主页 阿哈太阳 | 初学一级 | 园豆:2
提问于:2015-05-17 22:57
< >
分享
最佳答案
0
SELECT * FROM

(
    SELECT
        A.TYPE, A.NUMBER, B.TIME
    FROM
        [材料表] A, [关联表] B
    WHERE
        A.REGION_ID = B.REGION_ID
) T

PIVOT 

(
    SUM(T.NUMBER)
    FOR B.TIME IN ('2.14', '2.15', '2.16', '2.17', '2.18', '2.19')
)
收获园豆:20
过于执著 | 菜鸟二级 |园豆:339 | 2015-05-18 09:34

如果 SQL SERVER 版本比较低, 不支持 PIVOT 可以使用

SELECT

A.TYPE,

SUM(CASE WHEN B.TIME = '2.14' THEN A.NUMBER ELSE 0 END) '2.14',

SUM(CASE WHEN B.TIME = '2.15' THEN A.NUMBER ELSE 0 END) '2.15'

...

FROM [材料表] A, [关联表] B

WHERE A.REGION_ID = B.编号

GROUP BY A.TYPE

过于执著 | 园豆:339 (菜鸟二级) | 2015-05-18 09:50

@过于执著: 这种方法是可以的,我用的mysql,PIVOT 不能使用。

十分感谢。

阿哈太阳 | 园豆:2 (初学一级) | 2015-05-18 10:24
其他回答(1)
0

这样SQL server转不了,不过自己用代码写一下也就有了。

爱编程的大叔 | 园豆:30267 (高人七级) | 2015-05-17 23:08

求明示啊

支持(0) 反对(0) 阿哈太阳 | 园豆:2 (初学一级) | 2015-05-17 23:13

@放纵的野性: 用代码应该怎么做呢,我都想了一天了,还是不太明白

支持(0) 反对(0) 阿哈太阳 | 园豆:2 (初学一级) | 2015-05-17 23:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册