sql - How to only stuff values from a unique key -


i believe simple question equally simple answer, cannot figure out.

i have temporary table modeled , query returns data so:

+--------+------+---------+---------+--------+-----------+--------+-----+ | acct # | po # | store # | order # | line # | ship date | item # | qty | +--------+------+---------+---------+--------+-----------+--------+-----+ |  0777  | 3340 |   648   | 1756013 |   1    | 11/23/16  | 100598 |  1  | |  0777  | 3340 |   648   | 1756013 |   2    | 11/23/16  | 100597 |  1  | |  0777  | 3340 |   648   | 1756013 |   3    | 11/23/16  | 100598 |  1  | |  0777  | 3340 |   648   | 1756013 |   4    | 11/23/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 |   1    | 12/01/16  | 150962 |  1  | |  0777  | 3341 |   720   | 1760001 |   3    | 12/01/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 |   4    | 12/01/16  | 150961 |  1  | |  0777  | 3341 |   720   | 1760001 |   7    | 12/01/16  | 150961 |  1  | |  0777  | 3341 |   720   | 1760001 |   8    | 12/01/16  | 156961 |  1  | +--------+------+---------+---------+--------+-----------+--------+-----+ 

i supposed consolidating like-rows qty increases 1 2, etc., each item number same on order number. have part working in order had rid of line number, data returned looks this:

+--------+------+---------+---------+-----------+--------+-----+ | acct # | po # | store # | order # | ship date | item # | qty | +--------+------+---------+---------+-----------+--------+-----+ |  0777  | 3340 |   648   | 1756013 | 11/23/16  | 100598 |  2  | |  0777  | 3340 |   648   | 1756013 | 11/23/16  | 100597 |  1  | |  0777  | 3340 |   648   | 1756013 | 11/23/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 12/01/16  | 150962 |  1  | |  0777  | 3341 |   720   | 1760001 | 12/01/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 12/01/16  | 150961 |  3  | +--------+------+---------+---------+-----------+--------+-----+ 

however, need line # column accurately report on order-line being worked on, shipped, etc. know stuff() function can except adding every single line # , not ones specific order #. here query:

select distinct     supplieracctnumber 'acct #',     buyerponumber 'po #',     buyerstorenumber 'store #',     supplierordernumber 'order #',     supplierorderline =         stuff((select ',' + cast(t.supplierorderline varchar)             @temp t             t.supplierordernumber = supplierordernumber                 , t.buyeritemnumber = buyeritemnumber xml path ('')),1,1,''),     suppliershipdate 'ship date',     buyeritemnumber 'item #',     sum(supplierqtyordered) 'qty' @temp group supplieracctnumber, buyerponumber, buyerstorenumber, supplierordernumber,     supplierorderline, suppliershipdate, buyeritemnumber order supplierordernumber 

and here results got:

+--------+------+---------+---------+-------------------+-----------+--------+-----+ | acct # | po # | store # | order # | line #            | ship date | item # | qty | +--------+------+---------+---------+-------------------+-----------+--------+-----+ |  0777  | 3340 |   648   | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16  | 100598 |  2  | |  0777  | 3340 |   648   | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16  | 100597 |  1  | |  0777  | 3340 |   648   | 1756013 | 1,2,3,4,1,3,4,7,8 | 11/23/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16  | 150962 |  1  | |  0777  | 3341 |   720   | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 1,2,3,4,1,3,4,7,8 | 12/01/16  | 150961 |  3  | +--------+------+---------+---------+-------------------+-----------+--------+-----+ 

here results expected:

+--------+------+---------+---------+-------------------+-----------+--------+-----+ | acct # | po # | store # | order # | line #            | ship date | item # | qty | +--------+------+---------+---------+-------------------+-----------+--------+-----+ |  0777  | 3340 |   648   | 1756013 | 1,3               | 11/23/16  | 100598 |  2  | |  0777  | 3340 |   648   | 1756013 | 2                 | 11/23/16  | 100597 |  1  | |  0777  | 3340 |   648   | 1756013 | 4                 | 11/23/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 1                 | 12/01/16  | 150962 |  1  | |  0777  | 3341 |   720   | 1760001 | 3                 | 12/01/16  | 100596 |  1  | |  0777  | 3341 |   720   | 1760001 | 4,7,8             | 12/01/16  | 150961 |  3  | +--------+------+---------+---------+-------------------+-----------+--------+-----+ 

the issue, mentioned in comments, simple mixup how stuff written. adjusted, query should looke this, table alias @temp outside stuff statement:

select distinct     supplieracctnumber 'acct #',     buyerponumber 'po #',     buyerstorenumber 'store #',     supplierordernumber 'order #',     supplierorderline =         stuff((select ',' + cast(t.supplierorderline varchar)             @temp             t.supplierordernumber = supplierordernumber                 , t.buyeritemnumber = buyeritemnumber xml path ('')),1,1,''),     suppliershipdate 'ship date',     buyeritemnumber 'item #',     sum(supplierqtyordered) 'qty' @temp t group supplieracctnumber, buyerponumber, buyerstorenumber, supplierordernumber,     supplierorderline, suppliershipdate, buyeritemnumber order supplierordernumber; 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -