读书人

请问一个SQLite SQL语句得到报表的有关

发布时间: 2012-04-11 17:42:33 作者: rapoo

请教一个SQLite SQL语句得到报表的问题
请教一个SQLite SQL语句得到报表的问题

我需要修改一个程序 以前是用ACCESS作为数据库的,现在转用Sqlite
我建表的语句是
Create TABLE table1
[Sn] integer PRIMARY KEY ASC AUTOINCREMENT UNIQUE NOT NULL
,[Humidity] integer NOT NULL /*湿度*/
,[Temperature] integer NOT NULL /*温度*/
,[RecDate] datetime NOT NULL /*记录日期*/
,[RecTime] datetime NOT NULL /*记录时间*/
,[kufang] integer NOT NULL /*库房*/
);
我现在想从这个表中提取数据形成一个报表
报表格式如下

请问该怎么做? 知道的请帮忙看看 谢谢了

我对数据库熟悉程度有限,估计对这个表还有很多欠缺,请大家多指点一下 谢谢了

[解决办法]


用group by 比较容易实现。

SQL code
sqlite> Create TABLE table1(   ...> [Sn] integer PRIMARY KEY ASC AUTOINCREMENT UNIQUE NOT NULL   ...> ,[Humidity] integer NOT NULL /*湿度*/   ...> ,[Temperature] integer NOT NULL /*温度*/   ...> ,[RecDate] datetime NOT NULL /*记录日期*/   ...> ,[RecTime] datetime NOT NULL /*记录时间*/   ...> ,[kufang] integer NOT NULL /*库房*/   ...> );sqlite>sqlite> select * from table1;2|10|20|2000-04-12|09:00:00|13|11|21|2000-04-12|11:00:00|14|12|22|2000-04-12|17:00:00|15|13|23|2000-04-12|15:00:00|16|14|24|2000-04-13|09:00:00|17|15|25|2000-04-13|01:00:00|1sqlite>sqlite> select kufang,RecDate,   ...>         sum((1/('09'-strftime('%H',RecTime)) is null)*Humidity) as Humidity9,   ...>         sum((1/('09'-strftime('%H',RecTime)) is null)*Temperature) as Temperature9,   ...>         sum((1/('11'-strftime('%H',RecTime)) is null)*Humidity) as Humidity11,   ...>         sum((1/('11'-strftime('%H',RecTime)) is null)*Temperature) as Temperature11,   ...>         sum((1/('15'-strftime('%H',RecTime)) is null)*Humidity) as Humidity15,   ...>         sum((1/('15'-strftime('%H',RecTime)) is null)*Temperature) as Temperature15,   ...>         sum((1/('17'-strftime('%H',RecTime)) is null)*Humidity) as Humidity17,   ...>         sum((1/('17'-strftime('%H',RecTime)) is null)*Temperature) as Temperature17   ...> from table1   ...> group by kufang,RecDate;1|2000-04-12|10|20|11|21|13|23|12|221|2000-04-13|14|24|0|0|0|0|0|0
[解决办法]
上述代码假设你使用ACCESS数据库,如果不是,则用SUM(CASE WHEN)


select [kufang],[RecDate],
sum(case when strftime('%H',RecTime)='09' then 湿度 end),
sum(case when strftime('%H',RecTime)='09' then 温度 end)
group by [kufang],[RecDate]
其它的类似,没有看到记录及要求结果,贴出来看看

读书人网 >行业软件

热点推荐