如何解决在存在条件时查询一组数据与另一组数据
我正在为我的需求寻找更好的SQL解决方案: 我有这种性质的数据
bigdumblist = [
(0,{'product_id': 2,'product_uom_qty': 90}),(0,{'product_id': 3,'product_uom_qty': 5}),{'product_id': 5,'product_uom_qty': 69})
]
newlist = [i for i in bigdumblist if i[2]['product_id'] not in [2,3]]
当计数器= 0时,数据包含主数据。在某些情况下,存在派生数据或子数据,由计数器> 0标识。子数据的qty列加起来以匹配主数据。 / p>
需要编写一个查询,以在没有计数器> 0的相同ID的记录不存在时获取计数器= 0的数据,否则获取计数器> 0的记录
我能够将其编写为2个单独的查询并使用UNION-是否可以简化查询并避免使用UNION语句?
解决方法
您可以使用窗口功能:
select *
from (
select t.*,sum(counter) over(partition by id) sum_counter
from mytable t
) t
where sum_counter = O or counter > 0
,
也可以与LEAD合作
;with lead_cte as (
select *,lead([counter]) over (partition by id order by qty desc) lead_counter
from some_table)
select * from lead_cte where lead_counter=0 or [counter]>0;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。