私は、定期的なヘッダーにビジネスの住所が含まれ、そのビジネスに関連するいくつかの行が続き、その後に次のビジネスの住所が続く 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」は、都市、州、および郵便番号を含む変数です)
しかし、ADDR1 と CITY の間に空白行を入れる危険を冒さずに、「ADDR2 が null でない場合は 2 番目の住所行を追加する」方法を理解するのに苦労しています。
というか、いらない
BOB'S GUITARS
123 SESAME STREET
NEW YORK, NY 10001
サポートするために
DAVE'S CIGARS
456 MOCKINGBIRD LANE
SUITE 101
WASHINGTON, DC 12345
編集/追加: nvl とデコードの組み合わせの提案は正しい最初のステップでしたが、問題の 2 行の「行」がレポートの 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