postgresql预览报错

1. 概述

1.1 问题描述

postgresql在设计器预览报错查询没有传回任何结果,如图:

1.2 解决思路

问题原因:调用的语句中如果存在插入临时表,帆软设计器只会执行第一部分的。

解决思路:引用with


2. 示例

2.1 最初写法

create temp table TEMP1(

EMPLOYEE_ID int not null,

EMPLOYEE_NO VARCHAR(256),

EMPLOYEE_NAME VARCHAR(256),

ACCOUNT_TRANSACTION INT default 0,

REGISTER INT default 0

);

--充值

insert into TEMP1(EMPLOYEE_ID,EMPLOYEE_NO,EMPLOYEE_NAME,ACCOUNT_TRANSACTION)

select TXN_BY,B.EMPLOYEE_NO,B.EMPLOYEE_NAME,SUM(1) 充值人次

from api_sta.ACCOUNT_TRANSACTION A join api_sta.EMPLOYEE_INFO B ON A.TXN_BY = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894'

where   A.TXN_TYPE_CODE = '307261'

GROUP BY TXN_BY,B.EMPLOYEE_NO,B.EMPLOYEE_NAME;

--挂号

insert into TEMP1(EMPLOYEE_ID,EMPLOYEE_NO,EMPLOYEE_NAME,REGISTER)

select REGISTERING_OPERATOR_ID,B.EMPLOYEE_NO,B.EMPLOYEE_NAME,SUM(1) 挂号人次

from api_sta.REGISTER A join api_sta.EMPLOYEE_INFO B ON A.REGISTERING_OPERATOR_ID = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894'

GROUP BY REGISTERING_OPERATOR_ID,B.EMPLOYEE_NO,B.EMPLOYEE_NAME;

select EMPLOYEE_ID,EMPLOYEE_NO,EMPLOYEE_NAME,sum(ACCOUNT_TRANSACTION) ACCOUNT_TRANSACTION,sum(REGISTER) REGISTER from TEMP1

group by EMPLOYEE_ID,EMPLOYEE_NO,EMPLOYEE_NAME;

drop table if exists TEMP1;

在数据库执行效果:

在设计器执行效果:

2.2 引用with写法

写法一:

WITH 自助机 AS(

--充值

select TXN_BY id,B.EMPLOYEE_NO,B.EMPLOYEE_NAME,count(*) 充值人次,'0' 挂号人次

from api_sta.ACCOUNT_TRANSACTION A join api_sta.EMPLOYEE_INFO B ON A.TXN_BY = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894'

where  A.TXN_TYPE_CODE = '307261'

GROUP BY id,B.EMPLOYEE_NO,B.EMPLOYEE_NAME

union all 

--挂号

select REGISTERING_OPERATOR_ID id,B.EMPLOYEE_NO,B.EMPLOYEE_NAME,'0' 充值人次,SUM(1) 挂号人次

from api_sta.REGISTER A join api_sta.EMPLOYEE_INFO B ON A.REGISTERING_OPERATOR_ID = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894'

GROUP BY id,B.EMPLOYEE_NO,B.EMPLOYEE_NAME)

select * from 自助机

在数据库执行效果:

在设计器执行效果:

写法二:

WITH 充值人次 AS (

       select B.EMPLOYEE_NO,B.EMPLOYEE_NAME,SUM(1) 充值人次

       from api_sta.ACCOUNT_TRANSACTION A join api_sta.EMPLOYEE_INFO B ON A.TXN_BY = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894' where  A.TXN_TYPE_CODE = '307261'

       GROUP BY B.EMPLOYEE_NO,B.EMPLOYEE_NAME

     ), 挂号人次 AS (

       select B.EMPLOYEE_NO,B.EMPLOYEE_NAME,SUM(1) 挂号人次

       from api_sta.REGISTER A join api_sta.EMPLOYEE_INFO B ON A.REGISTERING_OPERATOR_ID = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894'

       GROUP BY B.EMPLOYEE_NO,B.EMPLOYEE_NAME

     )

SELECT EMPLOYEE_NO,

       EMPLOYEE_NAME,

       SUM(1)充值人次,

       SUM(1)挂号人次

FROM api_sta.EMPLOYEE_INFO

WHERE EMPLOYEE_NO IN (SELECT B.EMPLOYEE_NO FROM api_sta.ACCOUNT_TRANSACTION A left join api_sta.EMPLOYEE_INFO B ON A.TXN_BY = B.EMPLOYEE_ID AND B.EMPLOYMENT_TYPE_CODE = '263894' where  A.TXN_TYPE_CODE = '307261')

GROUP BY EMPLOYEE_NO,EMPLOYEE_NAME;

在数据库执行效果:

在设计器执行效果:






Attachment List


Theme: 下架文档
Already the First
  • Helpful
  • Not helpful
  • Only read

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

Get
Help
Online Support
Professional technical support is provided to quickly help you solve problems.
Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
Page Feedback
You can provide suggestions and feedback for the current web page.
Pre-Sales Consultation
Business Consultation
Business: international@fanruan.com
Support: support@fanruan.com
Page Feedback
*Problem Type
Cannot be empty
Problem Description
0/1000
Cannot be empty

Submitted successfully

Network busy