金蝶ERP SOLD数据库查询技能
技能概述
本技能用于金蝶EAS Cloud ERP系统的PostgreSQL数据库查询,支持各类业务单据的SQL查询、数据分析、表结构探查等操作。
数据库连接信息
主机: 111.198.79.26
端口: 5432
用户: cosmic
密码: Kd1234567890!
数据库: yyzl202501
表命名规范
| 前缀/后缀 |
说明 |
示例 |
t_ |
业务数据表前缀 |
t_ap_finapbill |
_l |
分录表后缀 |
t_ap_finapbill_l |
_r3 |
R3视图后缀 |
t_im_purinbill_r3 |
_lk |
Link关联表 |
t_po_purorder_lk |
_tc |
临时表 |
|
_wb |
工作流相关表 |
|
t_bos_ |
BOS平台表 |
t_bos_atomicincr_generator |
t_gl_ |
财务总账模块 |
t_gl_voucher |
t_ap_ |
应付模块 |
t_ap_paybill |
t_ar_ |
应收模块 |
t_ar_receivebill |
t_im_ |
库存模块 |
t_im_purinbill |
t_po_ |
采购模块 |
t_po_purorder |
t_sal_ |
销售模块 |
t_sal_saleorder |
t_bd_ |
基础资料 |
t_bd_material |
常用标准字段
| 字段名 |
说明 |
fid |
单据主键ID |
fnumber |
单据编号 |
fcreate_time |
创建时间 |
fcreatorid |
创建人ID |
fmodify_time |
修改时间 |
fmodifierid |
修改人ID |
fdocumentstatus |
单据状态 |
fbilltype |
单据类型 |
fdate |
单据日期 |
famount |
金额 |
famt_lc |
本币金额 |
单据状态码说明
| 状态码 |
说明 |
| 0 |
草稿 |
| 1 |
已提交/审核中 |
| 2 |
已审核 |
| 3 |
已驳回 |
| 4 |
已关闭 |
| 5 |
作废/红冲 |
使用示例
1. 查询表结构
-- 查询表的列信息
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 't_po_purorder'
ORDER BY ordinal_position;
2. 查询采购订单
-- 查询采购订单表头
SELECT fid, fnumber, fdate, famount_lc, fdocumentstatus
FROM t_po_purorder
WHERE fdate >= '2025-01-01'
LIMIT 100;
-- 查询采购订单分录
SELECT fid, fentryid, fmaterialid, fqty, fprice, famount
FROM t_po_purorder_l
WHERE fid = '订单fid';
3. 查询销售订单
SELECT fid, fnumber, fdate, fcustid, famount_lc, fdocumentstatus
FROM t_sal_saleorder
WHERE fdate >= '2025-01-01'
ORDER BY fdate DESC
LIMIT 100;
4. 查询应付付款单
SELECT fid, fnumber, fdate, famount_lc, fpaytype, fdocumentstatus
FROM t_ap_paybill
WHERE fdate >= '2025-01-01'
ORDER BY fdate DESC
LIMIT 100;
5. 查询应收收款单
SELECT fid, fnumber, fdate, famount_lc, fdocumentstatus
FROM t_ar_receivebill
WHERE fdate >= '2025-01-01'
ORDER BY fdate DESC
LIMIT 100;
6. 查询入库单
SELECT fid, fnumber, fdate, fstockorgid, fdocumentstatus
FROM t_im_purinbill
WHERE fdate >= '2025-01-01'
ORDER BY fdate DESC
LIMIT 100;
7. 查询编码规则
-- 查询所有单据编码规则
SELECT fnumber, fprefix, fformat, fcurrentvalue
FROM t_bos_atomicincr_generator
ORDER BY fnumber;
8. 模糊搜索表名
-- 搜索包含指定关键词的表
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name LIKE '%keyword%'
ORDER BY table_name;
常用SQL模板
关联查询表头和分录
SELECT
h.fnumber,
h.fdate,
h.famount_lc,
l.fentryid,
l.fmaterialid,
l.fqty,
l.fprice,
l.famount
FROM t_po_purorder h
LEFT JOIN t_po_purorder_l l ON h.fid = l.fid
WHERE h.fdate >= '2025-01-01'
LIMIT 100;
按日期统计单据数量和金额
SELECT
DATE(fdate) as bill_date,
COUNT(*) as bill_count,
SUM(famount_lc) as total_amount
FROM t_po_purorder
WHERE fdate >= '2025-01-01'
GROUP BY DATE(fdate)
ORDER BY bill_date DESC;
按状态统计单据
SELECT
CASE fdocumentstatus
WHEN 0 THEN '草稿'
WHEN 1 THEN '已提交'
WHEN 2 THEN '已审核'
WHEN 3 THEN '已驳回'
WHEN 4 THEN '已关闭'
WHEN 5 THEN '作废'
ELSE '未知'
END as status_name,
COUNT(*) as count,
SUM(famount_lc) as total_amount
FROM t_po_purorder
WHERE fdate >= '2025-01-01'
GROUP BY fdocumentstatus
ORDER BY fdocumentstatus;
注意事项
- 大表查询限制: 生产环境数据量较大,查询时务必加上LIMIT和时间范围条件
- 避免全表扫描: 尽量使用fid、fnumber、fdate等有索引的字段作为查询条件
- 分录表关联: 分录表使用
_l后缀,通过fid字段与主表关联
- 时间格式: PostgreSQL中日期比较使用标准ISO格式
'YYYY-MM-DD'
- 权限: 只有只读权限,请勿执行UPDATE/DELETE/DROP等写操作
故障排除
表不存在
- 检查表名是否正确,是否遗漏了
t_前缀
- 确认是表头还是分录表(分录表需加
_l后缀)
- 使用模糊搜索查找正确的表名
字段不存在
- 使用
information_schema.columns查询表的实际列名
- 注意字段大小写(PostgreSQL默认小写)
查询太慢
- 增加LIMIT限制返回行数
- 加上时间范围条件
- 使用有索引的字段过滤
- 避免在大表上使用ORDER BY无索引字段