首页 新闻 搜索 专区 学院

这样的SQL该怎么写?

0
悬赏园豆:5 [已解决问题] 解决于 2011-11-29 16:42

只要有3个表,分别为 DataSort(数据类别表),Data (数据表),Header(一辆车每天的记录投档)

DataSort表有两个列,Id 和 Name

Data表有三个列,Id,DataSortId,Value,HeaderId

Header表

现在有这样的情况,数据类别有2个,分别为平均车速和运行时间。

因此假设有以下数据

DataSort表

IdName
1 平均车速
2 运行时间

 Data表

IdDataSortIdValueHeaderId
1 1 130 11
2 2 1000 12

 Header表

IdCatDate
11 A 2011-11-11
22 B 2011-11-11

三个表互相关联

我是想计算得到,每辆车每天行驶的里程(里程=平均车速×运行时间)

这样的SQL要怎么写呢?对问题有什么不明白的地方请留言?

it9527的主页 it9527 | 初学一级 | 园豆:5
提问于:2011-11-29 10:34
< >
分享
最佳答案
0
SELECT a.Cat,a.date,a.speed*b.time AS Mileage FROM (
SELECT d.DataSortId,h.Cat,h.Date,sum(d.Value) AS speed
FROM Data d
LEFT JOIN Header h
ON d.HeaderId=h.Id
WHERE DataSortId=1
GROUP BY d.DataSortId,h.Cat,h.Date
) a
INNER JOIN
(SELECT d.DataSortId,h.Cat,h.Date,sum(d.Value) AS time
FROM Data d
LEFT JOIN Header h
ON d.HeaderId=h.Id
WHERE DataSortId=2
GROUP BY d.DataSortId,h.Cat,h.Date
) b
ON a.Cat=b.Cat AND a.Date=b.Date


 

收获园豆:5
LCM | 大侠五级 |园豆:6876 | 2011-11-29 12:14

虽然看不懂,但经过稍稍修改之后,问题还是解决的,呵呵

it9527 | 园豆:5 (初学一级) | 2011-11-29 16:40

突然又看明白了,这个回答给了我好多启发 哈哈

it9527 | 园豆:5 (初学一级) | 2011-11-29 16:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册