日期:2014-05-16  浏览次数:21085 次

求能在ACCESS中运行SQL语句一条
关于24小时的行转列,我已经明白了。
怎么固定输出日期为31天呢?


即:
  31*24的表结构

刚才已经在SQL区,明白通过新建日期表来操作是可行的,
但我想不用另外新建日期表,有没有这样的语句能在ACCESS中运行的?



[Quote=之前的问题]

有个表的数据结构是这样的,
日期 小时 值

现在要查询数据结果,要按日期排序,在1行中按1-24列值的数据,SQL语句该怎么写?

举例:
原表
日期 时间 VALUE
01 1 1
01 2 2
02 3 3
02 4 4

生产的新表要求:
日期 时1 时2 时3 时4 。。。时24
01 1 2
02 3 4 

有个表的数据结构是这样的,
日期 小时 值

现在要查询数据结果,要按日期排序,在1行中按1-24列值的数据,SQL语句该怎么写?

举例:
原表
日期 时间 VALUE
01 1 1
01 2 2
02 3 3
02 4 4

生产的新表要求:
日期 时1 时2 时3 时4 。。。时24
01 1 2
02 3 4 

[\Quote]



------解决方案--------------------
TRANSFORM MAX(VALUE)
SELECT 日期 FROM TT GROUP BY 日期
PIVOT 时间 IN(1,2,3,4,5..24)
------解决方案--------------------
引用刚才已经在SQL区,明白通过新建日期表来操作是可行的,
但我想不用另外新建日期表,有没有这样的语句能在ACCESS中运行的?

------解决方案--------------------
SQL code
TRANSFORM Sum(VALUE) AS f3OfSum
SELECT 时间
FROM (
    select 日期,时间,VALUE
    from 原表
    union all select top 1 '01' as 日期,1 as 时间,null as VALUE from 原表
    union all select top 1 '02' as 日期,2 as 时间,null as VALUE from 原表
    union all select top 1 '03' as 日期,3 as 时间,null as VALUE from 原表
    union all select top 1 '04' as 日期,4 as 时间  ,null as VALUE from 原表
    union all select top 1 '05' as 日期,5 as 时间  ,null as VALUE from 原表
    union all select top 1 '06' as 日期,6 as 时间  ,null as VALUE from 原表
    union all select top 1 '07' as 日期,7 as 时间  ,null as VALUE from 原表
    union all select top 1 '08' as 日期,8 as 时间  ,null as VALUE from 原表
    union all select top 1 '09' as 日期,9 as 时间  ,null as VALUE from 原表
    union all select top 1 '10' as 日期,10 as 时间 ,null as VALUE  from 原表
    union all select top 1 '11' as 日期,11 as 时间 ,null as VALUE  from 原表
    union all select top 1 '12' as 日期,12 as 时间 ,null as VALUE  from 原表
    union all select top 1 '13' as 日期,13 as 时间 ,null as VALUE  from 原表
    union all select top 1 '14' as 日期,14 as 时间 ,null as VALUE  from 原表
    union all select top 1 '15' as 日期,15 as 时间 ,null as VALUE  from 原表
    union all select top 1 '16' as 日期,16 as 时间 ,null as VALUE  from 原表
    union all select top 1 '17' as 日期,17 as 时间 ,null as VALUE  from 原表
    union all select top 1 '18' as 日期,18 as 时间 ,null as VALUE  from 原表
    union all select top 1 '19' as 日期,19 as 时间 ,null as VALUE  from 原表
    union all select top 1 '20' as 日期,20 as 时间 ,null as VALUE  from 原表
    union all select top 1 '21' as 日期,21 as 时间 ,null as VALUE  from 原表
    union all select top 1 '22' as 日期,22 as 时间 ,null as VALUE  from 原表
    union all select top 1 '23' as 日期,23 as 时间 ,null as VALUE  from 原表
    union all select top 1 '24' as 日期,24 as 时间 ,null as VALUE  from 原表
    union all select top 1 '25' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '26' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '27' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '28' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '29' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '30' as 日期,1 as 时间  ,null as VALUE from 原表
    union all select top 1 '31' as 日期,1 as 时间  ,null as VALUE from 原表
) q
GROUP BY 时间
PIVOT 日期;