![]() |
|
Archives of the TeradataForumMessage Posted: Thu, 29 Jun 2006 @ 09:50:11 GMT
Anomy, How about a recursive query?
CREATE SET TABLE mytable
(
col1 INTEGER,
col2 INTEGER)
PRIMARY INDEX ( col1 );
insert into mytable(2,200);
insert into mytable(6,10);
insert into mytable(9,400);
insert into mytable(13,60);
WITH RECURSIVE r (col1, col2, col3) AS
(
SELECT 0, c.col2, c.col1 -1
FROM mytable c
WHERE c.col1 IN
(
SELECT MIN(col1)
FROM mytable)
UNION ALL
SELECT a.col1, a.col2, b.col1 - 1
FROM mytable a, mytable b
WHERE b.col1 IN
(
SELECT MIN(col1)
FROM mytable
WHERE col1 > a.col1)
UNION ALL
SELECT d.col1, d.col2, d.col1
FROM mytable d
WHERE d.col1 IN
(
SELECT MAX(col1)FROM mytable)
UNION ALL
SELECT rgen.col1+1, rgen.col2, rgen.col3
FROM r rgen
Where rgen.col1 < rgen.col3
)
SELECT DISTINCT col1, col2
FROM r
ORDER BY 1
;
Returns....
0 200
1 200
2 200
3 200
4 200
5 200
6 10
7 10
8 10
9 400
10 400
11 400
12 400
13 60
The DISTINCT in the final select prevents two rows with a 0 in col1 if your data has a 0 row in col1. The query assumes the input does not have multiple col2 values for the same col1 value. etc. Mark
| ||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||