-2
试图让这个输出:最小值和最大值--Oracle
试图让这个输出Oracle 8i中:从另一个查询
column1 |starttime |endtime | ID
________|___________|___________ |
ABC | 00:00:01 | 01:00:01 | 1
ABC | 00:00:02 | 01:00:02 | 1
ABC | 00:00:03 | 01:00:03 | 1
123 | 00:00:04 | 01:00:04 | 2
123 | 00:00:05 | 01:00:05 | 2
123 | 00:00:06 | 01:00:06 | 2
123 | 00:00:07 | 01:00:07 | 2
ABC | 00:00:08 | 01:00:08 | 3
ABC | 00:00:09 | 01:00:09 | 3
ABC | 00:00:10 | 01:00:10 | 4
这
column1 |time
________|_______
ABC | 00:00:01
END | 01:00:03
123 | 00:00:04
END | 01:00:07
ABC | 00:00:08
END | 01:00:09
ABC | 00:00:10
END | 01:00:10
这个输出查询获取仅启动时间列的最小值和最大值:
SELECT (
CASE
WHEN n.n = 1
THEN column1
ELSE 'END'
END) AS column1,
(
CASE
WHEN n.n = 1
THEN firsttime
ELSE lasttime
END) AS "time"
FROM
(SELECT column1,
id,
MIN(starttime) AS firsttime,
MAX(starttime) AS lasttime
FROM t
GROUP BY column1,
id
) t
CROSS JOIN
(SELECT 1 AS n FROM dual
UNION ALL
SELECT 2 FROM dual
) n
ORDER BY id,
column1,
n.n;
现在我又有了一个名为endtime
的专栏,我不知道该怎么考虑这个专栏,并从该专栏中获取END
值?由于n.n
是1
,所以我只能在ID
中只记录一条记录。
考虑结束时间总是大于开始时间..'MAX(结束时间)'本身还不够吗? –
@downvoter:我知道为什么吗? –
@OracleUser:问题是当我每个ID只有一行时。无论如何,在这种情况下,n.n将是1。 –