dotnetcore / dotnetcore/FreeSql

求教大老,postgresql 这样的语句 用 feesql 怎么写来

Open
#2,043 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.4k
Forks
910
PR merge metrics
No merged PRs in 30d

Description

WITH filtered_orders AS (
-- 合并所有月份的数据并筛选条件
SELECT * FROM "erp_order_202501" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
UNION ALL
SELECT * FROM "erp_order_202502" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
UNION ALL
SELECT * FROM "erp_order_202503" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
UNION ALL
SELECT * FROM "erp_order_202504" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
UNION ALL
SELECT * FROM "erp_order_202505" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
UNION ALL
SELECT * FROM "erp_order_202506" WHERE EXTRACT(YEAR FROM "created_time") = 2025 AND "category_code" LIKE '13%' AND "output_qty" <> 0
),
ranked_orders AS (
-- 为每个商品的记录按时间排序
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY "goods_code" ORDER BY "created_time" DESC) AS rn
FROM filtered_orders
)
-- 主查询:获取每个商品的最新记录并聚合结果
SELECT
r."goods_code" AS as1,
MAX(r."goods_name") AS as2, -- 商品名称(可直接取最新记录的名称)
r."balance_qty" AS as3, -- 最新时间的结存数量
SUM(f."output_qty") AS as4 -- 总出库数量
FROM ranked_orders r
JOIN filtered_orders f ON r."goods_code" = f."goods_code"
WHERE r.rn = 1 -- 只取每个商品的最新记录
GROUP BY r."goods_code", r."balance_qty"
ORDER BY SUM(f."output_qty") DESC
LIMIT 10; 求教大老,postgresql 这样的语句 用 feesql 怎么写来

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.