从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没有名字的马。完全同意,但这是一个错误:。可能只是一个解析错误,因为它不是一个明显的测试用例,所以不会被捕获。