如何获取第一条和最后一条记录?一步解决?
How to Obtain First and Last record ? One Step Solution?
我有以下数据table。
Record Date Price
A 3/1/2015 5
A 3/2/2015 6
A 3/3/2015 7
A 3/4/2015 10
B 2/1/2015 4
B 2/2/2015 6
B 2/3/2015 15
B 2/4/2015 2
如何输出一个 table 只显示 table 中第一个日期和 table 中最后一个日期的每条记录的第一个价格和最后一个价格.输出列将是记录、第一价格、最后价格。我正在寻找一种易于实施的一步解决方案,以便创建自定义视图。
所需的输出为:
Record FirstPrice LastPrice
A 5 10
B 4 2
"in order to create a custom view."...您希望在 Oracle/MySql 中将此操作作为 CREATE VIEW 还是只是 query/select 语句?
也许您正在寻找这样的东西?
select R.Record, FD.Price as MinPrice, LD.Price as MaxPrice
from Records R
join (
select Price, R1.Record
from Records R1
where Date = (select MIN(DATE) from Records R2 where R2.Record = R1.Record)
) FD on FD.Record = R.Record
join (
select Price, R1.Record
from Records R1
where Date = (select MAX(DATE) from Records R2 where R2.Record = R1.Record)
) LD on LD.Record = R.Record
group by R.Record
获取按记录字段分组的最小和最大聚合日期并连接回根数据。如果同一日期的同一记录字段可以有多个记录,则必须使用 min、max 或 avg 来获取该日期的一个值。
SQLFiddle: http://sqlfiddle.com/#!9/1158b/3
SELECT anchorData.Record
, firstRecord.Price
, lastRecord.Price
FROM (
SELECT Record
, MIN(Date) AS FirstDate
, MAX(Date) AS LastDate
FROM Table1
GROUP BY Record
) AS anchorData
JOIN Table1 AS firstRecord
ON firstRecord.Record = anchorData.Record
AND firstRecord.Date = anchorData.FirstDate
JOIN Table1 AS lastRecord
ON lastRecord.Record = anchorData.Record
AND lastRecord.Date = anchorData.LastDate
我有以下数据table。
Record Date Price
A 3/1/2015 5
A 3/2/2015 6
A 3/3/2015 7
A 3/4/2015 10
B 2/1/2015 4
B 2/2/2015 6
B 2/3/2015 15
B 2/4/2015 2
如何输出一个 table 只显示 table 中第一个日期和 table 中最后一个日期的每条记录的第一个价格和最后一个价格.输出列将是记录、第一价格、最后价格。我正在寻找一种易于实施的一步解决方案,以便创建自定义视图。
所需的输出为:
Record FirstPrice LastPrice
A 5 10
B 4 2
"in order to create a custom view."...您希望在 Oracle/MySql 中将此操作作为 CREATE VIEW 还是只是 query/select 语句?
也许您正在寻找这样的东西?
select R.Record, FD.Price as MinPrice, LD.Price as MaxPrice
from Records R
join (
select Price, R1.Record
from Records R1
where Date = (select MIN(DATE) from Records R2 where R2.Record = R1.Record)
) FD on FD.Record = R.Record
join (
select Price, R1.Record
from Records R1
where Date = (select MAX(DATE) from Records R2 where R2.Record = R1.Record)
) LD on LD.Record = R.Record
group by R.Record
获取按记录字段分组的最小和最大聚合日期并连接回根数据。如果同一日期的同一记录字段可以有多个记录,则必须使用 min、max 或 avg 来获取该日期的一个值。
SQLFiddle: http://sqlfiddle.com/#!9/1158b/3
SELECT anchorData.Record
, firstRecord.Price
, lastRecord.Price
FROM (
SELECT Record
, MIN(Date) AS FirstDate
, MAX(Date) AS LastDate
FROM Table1
GROUP BY Record
) AS anchorData
JOIN Table1 AS firstRecord
ON firstRecord.Record = anchorData.Record
AND firstRecord.Date = anchorData.FirstDate
JOIN Table1 AS lastRecord
ON lastRecord.Record = anchorData.Record
AND lastRecord.Date = anchorData.LastDate