-3

我有一个以下 Mysql 表存储不同发电站的仪表读数。

Date, station_name, reading
2013-05-06, ABC, 102
2013-05-06, PQR, 122

我想要一个特定日期的带有以下结果的 SQL 查询。

Date, ABC, PQR, ABC-PQR
2013-05-06,102,122,-20
4

2 回答 2

1

您可以使用 CASE 语句:

SELECT Date
      , SUM(CASE WHEN station_name = 'ABC' THEN reading ELSE 0 END) as ABC
      , SUM(CASE WHEN station_name = 'PQR' THEN reading ELSE 0 END) as PQR
      , SUM(CASE WHEN station_name = 'ABC' THEN reading ELSE 0 END) - SUM(CASE WHEN station_name = 'PQR' THEN reading ELSE 0 END) as 'ABC-PQR'
FROM table
WHERE Date = '20130506'
GROUP BY Date

您可以搜索 MySQL PIVOT 以了解人们使用的其他方法。

于 2013-06-09T17:01:24.307 回答
0

我相信不可能根据行的值来做动态列。我相信你应该在应用层而不是数据库层做。

看到这篇文章:mysql选择动态行值作为列名,另一列作为值

于 2013-06-09T16:59:49.243 回答