MSAccess查询:生成两个字段

时间:2017-07-12 08:49:37

标签: sql ms-access

我有MS Access视图生成此结果:

+-------+------------+-------+---------+--------+-------+
|  Id   |    Date    | Kind  | Initial | Final  | Total |
+-------+------------+-------+---------+--------+-------+
| 334AB | 01/04/2017 | Red   |  199725 | 199789 |    64 |
| 334AB | 01/04/2017 | Green |  199789 | 199799 |    10 |
| 107AE | 01/04/2017 | Red   |   73978 |  74074 |    96 |
| 107AE | 02/04/2017 | Green |   74074 |  74248 |   174 |
+-------+------------+-------+---------+--------+-------+

生成于:

Group by ID, Date and Kind
Initial: Min(startKm)
Final: Max(endKm)
Total: Sum(Distance)

这是查询:

SELECT street.Id, street.Date, IIf(IsNull([agev]), Kind, Min(street.Initial) AS Iniziali, Max(street.Final) AS Finali, Sum(street.Distance) AS Total
FROM street
GROUP BY street.Id, street.Date, Kind
ORDER BY street.Date;

我需要的是这个结果:

+-------+------------+---------+--------+----------+------------+-------+
|  Id   |    Date    | Initial | Final  | TotalRed | TotalGreen | Total |
+-------+------------+---------+--------+----------+------------+-------+
| 334AB | 01/04/2017 |  199725 | 199799 |       64 |         10 |    74 |
| 107AE | 01/04/2017 |   73978 |  74074 |       96 |          0 |    96 |
| 107AE | 02/04/2017 |   74074 |  74248 |        0 |        174 |   174 |
+-------+------------+---------+--------+----------+------------+-------+

其中,Initial是该id中当天最低的“初始”km 而最终是那天id

的最高“最终”公里

你有什么建议?

感谢

1 个答案:

答案 0 :(得分:2)

应该像这样:

    SELECT street.Id
          ,street.Date
          ,Min(street.Initial) AS Iniziali
          ,Max(street.Final) AS Finali
          ,SUM(IIF(street.Kind = 'Red',street.Distance,0)) AS TotalRed
          ,SUM(IIF(street.Kind = 'Green',street.Distance,0)) AS TotalGreen
          ,Sum(street.Distance) AS Total 
      FROM street 
  GROUP BY street.Id
          ,street.Date
  ORDER BY street.Date;