从PostgreSQL中的一组ID中选择第一个元素

从PostgreSQL中的一组ID中选择第一个元素,sql,postgresql,Sql,Postgresql,我有下表: CREATE TABLE my_table ( the_debt_transact_id int NOT NULL, the_debt_id varchar(6) NOT NULL, the_amount int NOT NULL, the_debt_date date NOT NULL, the_debt_flag varchar(6) ) INSERT INTO my_table VALUES ('900004','LMUS01',

我有下表:

CREATE TABLE my_table 
(
    the_debt_transact_id int NOT NULL,
    the_debt_id varchar(6) NOT NULL, 
    the_amount int NOT NULL, 
    the_debt_date date NOT NULL,
    the_debt_flag varchar(6)
)

INSERT INTO my_table
VALUES ('900004','LMUS01', '200', '2/12/2019','NORMAL'), 
       ('900002','LMUS01', '200', '2/11/2019','NORMAL'), 
       ('900005','LMUS01', '300', '2/13/2019','RESCHE'), 
       ('900001','LMUS02', '100', '2/10/2019','NORMAL'), 
       ('900003','LMUS02', '150', '2/12/2019','NORMAL')
我希望每个债务id中的第一个元素按事务编号排序,但其标志不是“RESCHE”

这是预期输出:

债务交易id债务id金额债务日期债务标志
900004 LMUS01 200 2019年2月12日正常
900003 LMUS02 150 2019年2月12日正常
我试过:

SELECT DISTINCT ON(the_debt_id) 
FROM my_table 
WHERE the_debt_id IN ('LMUS01','LMUS02') 
AND the_debt_flag <> 'RESCHE' 
ORDER BY the_debt_transact_id DESC 
选择DISTINCT ON(债务id)
从我的桌子上
其中,'LMUS01','LMUS02'中的\u债务\u id)
还有债务标志“RESCHE”
按债务交易id描述的订单
但它会回报我

附近的语法错误

任何帮助都将不胜感激

您需要选择一些东西。对于所有列:

SELECT DISTINCT ON (the_debt_id) t.*
FROM my_table t
WHERE the_debt_id IN ('LMUS01','LMUS02') AND the_debt_flag <> 'RESCHE'
ORDER BY the_debt_idl, the_debt_transact_id DESC ;
在(债务id)t上选择DISTINCT*
从我的桌子上
其中,'LMUS01','LMUS02'中的'u debt'id和'RESCHE'中的'u debt'u标志
通过债务idl订购,债务交易id描述;
请注意上的
顺序必须一致。

您需要选择一些内容。对于所有列:

SELECT DISTINCT ON (the_debt_id) t.*
FROM my_table t
WHERE the_debt_id IN ('LMUS01','LMUS02') AND the_debt_flag <> 'RESCHE'
ORDER BY the_debt_idl, the_debt_transact_id DESC ;
在(债务id)t上选择DISTINCT*
从我的桌子上
其中,'LMUS01','LMUS02'中的'u debt'id和'RESCHE'中的'u debt'u标志
通过债务idl订购,债务交易id描述;

请注意,上的
顺序必须一致。

Great@Gordon Linoff!谢谢你的时间和回答!虽然从我的表格中选择(省略所有列)实际上在Postgres中是有效的,但这个错误还是有点令人惊讶。@a没有名字的马。完全同意,但这是一个错误:。可能只是一个解析错误,没有被发现,因为它不是一个明显的测试用例。太棒了@Gordon Linoff!谢谢你的时间和回答!虽然从我的表格中选择(省略所有列)实际上在Postgres中是有效的,但这个错误还是有点令人惊讶。@a没有名字的马。完全同意,但这是一个错误:。可能只是一个解析错误,因为它不是一个明显的测试用例,所以不会被捕获。