Solved

Select query with FOR XML clause

Posted on 2009-07-01
2
201 Views
Last Modified: 2012-05-07
I am trying to create an XLM file with nodes.  The data is in two tables a Header and Detail table. I have combined those to make a view that looks like.

Customer      CustomerPO OrderDate     StockCode    OrderQty
BOB              10                 01-Jul-09       112-1            5
BOB              10                 02-Jul-09       111-1            3
BOB              10                 03-Jul-09       118-1            2
BOB              10                 04-Jul-09       114-1            1
FRED             NEW           05-Jul-09       118-1            6
FRED             NEW           06-Jul-09       114-1            2
...                   ...                  ...                   ...                 ...

Is there a way to use the FOR XML in SQLServer to get the data to look like the xml below?  Or is there some other utility I could use.

<Orders>
  <OrderHeader>
    <Customer>BOB</Customer>
    <CustomerPoNumber>10</CustomerPoNumber>
    <OrderDate>2009-07-01</OrderDate>
  </OrderHeader>
  <OrderDetails>
    <StockLine>
      <StockCode>112-1</StockCode>
      <OrderQty>5.000</OrderQty>
    </StockLine>
    <StockLine>
      <StockCode>111-1</StockCode>
      <OrderQty>3.000</OrderQty>
    </StockLine>
    <StockLine>
      <StockCode>118-1</StockCode>
      <OrderQty>2.000</OrderQty>
    </StockLine>
    <StockLine>
      <StockCode>114-1</StockCode>
      <OrderQty>1.000</OrderQty>
    </StockLine>
  </OrderDetails>
  <OrderHeader>
    <Customer>FRED</Customer>
    <CustomerPoNumber>FRED</CustomerPoNumber>
    <OrderDate>2009-07-01</OrderDate>
  </OrderHeader>
  <OrderDetails>
    <StockLine>
      <StockCode>118-1</StockCode>
      <OrderQty>6.000</OrderQty>
    </StockLine>
    <StockLine>
      <StockCode>114-1</StockCode>
      <OrderQty>2.000</OrderQty>
    </StockLine>
  </OrderDetails>
</Orders>

Open in new window

0
Comment
Question by:vbchewie
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 60

Accepted Solution

by:
Kevin Cross earned 250 total points
ID: 24757846
Something like this:
(you could try doing the conversion from original join as basically you want to get the details as a subquery for xml)
select Customer AS "OrderHeader/Customer"
, CustomerPO AS "OrderHeader/CustomerPO"
, MIN(OrderDate) AS "OrderHeader/OrderDate"
, CAST((SELECT StockCode AS "StockCode", CAST(OrderQty AS MONEY) AS "OrderQty" FROM tbl b WHERE tbl.Customer = b.Customer and tbl.CustomerPO = b.CustomerPO FOR XML PATH('StockLine'), ROOT('OrderDetails')) AS XML)
from tbl
group by Customer, CustomerPO
for xml path('Order'), root('Orders')

Open in new window

0
 
LVL 1

Author Closing Comment

by:vbchewie
ID: 31598931
Perfect! Thank you.
0

Featured Post

Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: When running hybrid database environments, you often need to query some data from a remote db of any type, while being connected to your MS SQL Server database. Problems start when you try to combine that with some "user input" pass…
Hi all, It is important and often overlooked to understand “Database properties”. Often we see questions about "log files" or "where is the database" and one of the easiest ways to get general information about your database is to use “Database p…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question