1
SELECT EMPLID
, LST_ASGN_START_DT  
  FROM PS_JOB A 
 WHERE A.EFFDT = ( 
 SELECT MAX(EFFDT) 
  FROM PS_JOB 
 WHERE A.EMPLID = EMPLID 
   AND A.EMPL_RCD = EMPL_RCD 
   AND EFFDT <= SYSDATE ) 
   AND A.EFFSEQ = ( 
 SELECT MAX(EFFSEQ) 
  FROM PS_JOB 
 WHERE A.EMPLID = EMPLID 
   AND A.EMPL_RCD = EMPL_RCD 
   AND A.EFFDT = EFFDT ) 
   AND HR_STATUS='A'

当直接在数据库上运行它时,我没有得到任何错误,但是当我在应用程序设计器上编译和构建它时,我得到一个错误“指定的列名数量无效”

我也试过这个,但仍然得到同样的错误。

SELECT A.EMPLID 
 , A.LST_ASGN_START_DT 
  FROM PS_JOB A 
 WHERE A.EFFDT = ( 
 SELECT MAX(EFFDT) 
  FROM PS_JOB 
 WHERE A.EMPLID = EMPLID 
   AND A.EMPL_RCD = EMPL_RCD 
   AND EFFDT <= SYSDATE ) 
   AND A.EFFSEQ = ( 
 SELECT MAX(EFFSEQ) 
  FROM PS_JOB 
 WHERE A.EMPLID = EMPLID 
   AND A.EMPL_RCD = EMPL_RCD 
   AND A.EFFDT = EFFDT ) 
   AND A.HR_STATUS='A'

这也不过没什么..

SELECT A.EMPLID 
 , A.LST_ASGN_START_DT 
  FROM PS_JOB A 
 WHERE A.EFFDT = ( 
 SELECT MAX(EFFDT) 
  FROM PS_JOB B 
 WHERE A.EMPLID = B.EMPLID 
   AND A.EMPL_RCD = B.EMPL_RCD 
   AND B.EFFDT <= SYSDATE ) 
   AND A.EFFSEQ = ( 
 SELECT MAX(EFFSEQ) 
  FROM PS_JOB C 
 WHERE A.EMPLID = C.EMPLID 
   AND A.EMPL_RCD = C.EMPL_RCD 
   AND A.EFFDT = C.EFFDT ) 
   AND A.HR_STATUS='A'
4

1 回答 1

2

您的选择中有两列,并且记录定义中的列数可能不同。sql语句和记录定义应该有相同的列数(但不一定是相同的字段名)

看这个例子:记录有5个字段 在此处输入图像描述

select 有 5 个字段: 在此处输入图像描述

于 2019-05-22T20:23:55.520 回答