我正在编写一个 SQLPlus 报告,其中重复的标题包含一个业务地址,后面是几个与该业务相关的行,然后是下一个业务的地址:
BOB'S GUITARS
123 SESAME STREET
NEW YORK, NY 10001
customer name last purchase date last purchase amount
------------- ------------------ --------------------
DAVE'S CIGARS
456 MOCKINGBIRD LANE
WASHINGTON, DC 12345
customer name last purchase date last purchase amount
------------- ------------------ --------------------
问题是这样的:
其中一些企业有多行地址,而另一些则没有。
我可以用类似的东西处理基本情况
TTITLE CENTER BUSINESSNAME SKIP 1 CENTER ADDR1 SKIP 1 CENTER CITY
(其中“CITY”是一个包含城市、州和邮编的变量)
但是我很难弄清楚如何放置“如果 ADDR2 不为空,则添加第二个地址行”而不冒 ADDR1 和 CITY 之间的空白行的风险。
换句话说,我不想
BOB'S GUITARS
123 SESAME STREET
NEW YORK, NY 10001
为了支持
DAVE'S CIGARS
456 MOCKINGBIRD LANE
SUITE 101
WASHINGTON, DC 12345
编辑/添加: nvl 和 decode 组合的建议是正确的第一步,但现在我遇到了问题,即有问题的两行“行”超过了报告的 LINEWIDTH,因此被截断为 LINEWIDTH 字符. 这是我用来生成该行的代码。请记住,两条线都必须居中:
SELECT RPAD(' ', (79 - length(trim(address)))/2)
|| trim(address)
|| decode(nvl(trim(address_2), '='), '=', '',
CHR(10)
|| RPAD(' ', (79 - length(trim(address_2)))/2, '-')
|| trim(address_2) || ' ') ADDR1 from business