Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Teradata第一个和最后一个值_Teradata - Fatal编程技术网

Teradata第一个和最后一个值

Teradata第一个和最后一个值,teradata,Teradata,如何在特殊列上获取group by列的第一个值和最后一个值? 例如:我需要基于group by og case id的case_owner列的first_值和last_值。第一个值: select case_owner as case_owner_first_value from table qualify row_number() over (partition by case_id order by case_id) = 1 对于最后一个值: select case_owner as

如何在特殊列上获取group by列的第一个值和最后一个值? 例如:我需要基于group by og case id的case_owner列的first_值和last_值。

第一个值:

select case_owner  as case_owner_first_value
from
table
qualify row_number() over (partition by case_id  order by case_id) = 1
对于最后一个值:

select case_owner  as case_owner_last_value
from
table
qualify row_number() over (partition by case_id order by case_id desc ) = 1
对于第一个值:

select case_owner  as case_owner_first_value
from
table
qualify row_number() over (partition by case_id  order by case_id) = 1
对于最后一个值:

select case_owner  as case_owner_last_value
from
table
qualify row_number() over (partition by case_id order by case_id desc ) = 1

请注意,在将第一个_值与ORDERBY子句组合时,可能需要在它们之间添加行

例如:

CREATE VOLATILE TABLE test_fv (id INTEGER,seq SMALLINT) ON COMMIT PRESERVE ROWS;

INSERT INTO test_fv VALUES (NULL,1);
INSERT INTO test_fv VALUES (2,2);
INSERT INTO test_fv VALUES (3,3);
INSERT INTO test_fv VALUES (4,4);
INSERT INTO test_fv VALUES (5,5);

SELECT seq, FIRST_VALUE(id ignore NULLS) OVER (ORDER BY seq ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM test_fv;
这行不通:

SELECT seq, FIRST_VALUE(id ignore NULLS) OVER (ORDER BY seq ASC) FROM test_fv;

请注意,在将第一个_值与ORDERBY子句组合时,可能需要在它们之间添加行

例如:

CREATE VOLATILE TABLE test_fv (id INTEGER,seq SMALLINT) ON COMMIT PRESERVE ROWS;

INSERT INTO test_fv VALUES (NULL,1);
INSERT INTO test_fv VALUES (2,2);
INSERT INTO test_fv VALUES (3,3);
INSERT INTO test_fv VALUES (4,4);
INSERT INTO test_fv VALUES (5,5);

SELECT seq, FIRST_VALUE(id ignore NULLS) OVER (ORDER BY seq ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM test_fv;
这行不通:

SELECT seq, FIRST_VALUE(id ignore NULLS) OVER (ORDER BY seq ASC) FROM test_fv;

请参见:您可以使用windows agg函数,如row_number()或rank()。请参见:您可以使用windows agg函数,如row_number()或rank()。