0

创建一个 PL/SQL 块来检索和显示在指定月份做出的所有承诺的数据。每个质押应显示一行输出。在每行输出中包括以下内容:

• 认捐ID、捐赠者ID和认捐金额
• 如果认捐是一次性支付的,则显示“Lump Sum”。
• 如果承诺按月支付,则显示“每月-#”(# 代表支付的月数)
• 列表应排序以首先显示所有一次性承诺。

这是表结构。

CREATE TABLE DD_Pledge (
                   idPledge number(5),
                   idDonor number(4),
                   Pledgedate DATE,
                   Pledgeamt number(8,2),
                   idProj number(5),
                   idStatus number(2),
                   Writeoff number(8,2),
                   paymonths number(3),
                   Campaign number(4),
                   Firstpledge char(1),
                   CONSTRAINT pledge_id_pk PRIMARY KEY(idPledge),
                   CONSTRAINT pledge_idDonor_fk FOREIGN KEY (idDonor)
                           REFERENCES dd_donor (idDonor), 
                   CONSTRAINT pledge_idProj_fk FOREIGN KEY (idProj)
                           REFERENCES dd_project (idProj),
                   CONSTRAINT pledge_idStatus_fk FOREIGN KEY (idStatus)
                           REFERENCES dd_status (idStatus)); 

我尝试使用记录,但似乎记录不起作用,因为当指定月份有多个承诺时,它会给我错误。有没有办法使用记录来做到这一点(因为这是我们在覆盖记录后接受的任务)

也许光标将是一个不错的选择,但由于前面提到的一点,我想知道解决这个问题的方法是什么。

4

1 回答 1

2
SELECT
  p.idPledge,
  p.idDonor,
  p.Pledgeamt as this_payment,
  case 
    when p.paymonths = 0 then 'Lump Sum'
    else 'Monthly - ' || p.paymonths 
  end as payment_method
FROM
  dd_pledge p
WHERE
  TRUNC(p.Pledgedate) >= '01-Mar-2010' AND TRUNC(p.Pledgedate) < '01-Apr-2010'  
order by
  4 

假设您将根据需要添加您的月份的开始/结束日期。

于 2013-03-28T14:40:58.323 回答