title: Is it possible to BREAK ON a column in addition to the one specified in SQL*Plus?
body: <p>This one's tough to explain, so I'll try to show what I'm after using examples. Please note that I'm not asking if it's possible to use multiple columns in a <code>BREAK</code> statement--I know that it is.</p>
  
  <p>Suppose I have a query like the following:</p>
  
  <pre><code>SELECT  invoice_no, invoice_date, vendor, account, amount
  FROM    invoice
  ORDER   BY vendor, invoice_no, account
  </code></pre>
  
  <p>And suppose the result set from that is:</p>
  
  <pre><code>INVOICE_NO INVOICE_DATE VENDOR  ACCOUNT AMOUNT
  ---------- ------------ ------- ------- ------
  0001       30-JAN-2009  Alpha   1000     50.00
  0003       30-JAN-2009  Alpha   1000    125.00
  0003       30-JAN-2009  Alpha   3000     33.33
  0006       02-FEB-2009  Alpha   2000     40.00
  0005       31-JAN-2009  Bravo   1000     40.00
  0002       30-JAN-2009  Charlie 2000    120.75
  0002       30-JAN-2009  Charlie 3000      5.00
  0004       30-JAN-2009  Charlie 1000    900.50
  </code></pre>
  
  <p>So you can see that some vendors have multiple invoices, and some invoices have multiple accounts.</p>
  
  <p>To hide the duplicate vendor names and invoice numbers, I can use SQL*Plus's <a href="http://download-west.oracle.com/docs/cd/B12037_01/server.101/b12170/ch13.htm#i2696939" rel="nofollow noreferrer"><code>BREAK</code></a> command like so:</p>
  
  <pre><code>BREAK ON vendor ON invoice_no
  </code></pre>
  
  <p>Which produces this result set:</p>
  
  <pre><code>INVOICE_NO INVOICE_DATE VENDOR  ACCOUNT AMOUNT
  ---------- ------------ ------- ------- ------
  0001       30-JAN-2009  Alpha   1000     50.00
  0003       30-JAN-2009          1000    125.00
             30-JAN-2009          3000     33.33
  0006       02-FEB-2009          2000     40.00
  0005       31-JAN-2009  Bravo   1000     40.00
  0002       30-JAN-2009  Charlie 2000    120.75
             30-JAN-2009          3000      5.00
  0004       30-JAN-2009          1000    900.50
  </code></pre>
  
  <p>So far, so good. I would also like to hide duplicate invoice dates, so that just the first date for each invoice is shown. However, if I use this command:</p>
  
  <pre><code>BREAK ON vendor ON invoice_no ON invoice_date
  </code></pre>
  
  <p>It will go too far and hide the date for invoices 0003 and 0004, just because they are the same as the previous invoices from their respective vendors:</p>
  
  <pre><code>INVOICE_NO INVOICE_DATE VENDOR  ACCOUNT AMOUNT
  ---------- ------------ ------- ------- ------
  0001       30-JAN-2009  Alpha   1000     50.00
  0003                            1000    125.00
                                  3000     33.33
  0006       02-FEB-2009          2000     40.00
  0005       31-JAN-2009  Bravo   1000     40.00
  0002       30-JAN-2009  Charlie 2000    120.75
                                  3000      5.00
  0004                    Charlie 1000    900.50
  </code></pre>
  
  <p>What I'd really like is a command syntax like the following (I made up the term <code>AND</code>):</p>
  
  <pre><code>BREAK ON vendor ON invoice_no AND invoice_date
  </code></pre>
  
  <p>The intention is that, whenever it breaks on invoice_no, to also break on invoice_date (since I know that a single invoice number can't have two invoice dates):</p>
  
  <pre><code>INVOICE_NO INVOICE_DATE VENDOR  ACCOUNT AMOUNT
  ---------- ------------ ------- ------- ------
  0001       30-JAN-2009  Alpha   1000     50.00
  0003       30-JAN-2009          1000    125.00
                                  3000     33.33
  0006       02-FEB-2009          2000     40.00
  0005       31-JAN-2009  Bravo   1000     40.00
  0002       30-JAN-2009  Charlie 2000    120.75
                                  3000      5.00
  0004       30-JAN-2009  Charlie 1000    900.50
  </code></pre>
  
  <p>And now the dates are correctly displayed for invoices 0003 and 0004.</p>
  
  <p>Is there any way to accomplish this in SQL*Plus?</p>