SQL Query- XML Place Multiple Results into Multiple Nodes

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • snots34
    New Member
    • Feb 2014
    • 2

    SQL Query- XML Place Multiple Results into Multiple Nodes

    This is my query:

    Code:
    select  rc.[race number] AS RaceNumber,
        max(case when seqnum = 1 then title1 end) as title1,
        max(case when seqnum = 1 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 1 then [candidate num] end) as Winner,
        max(case when seqnum = 1 then Votes end) as WinningVotes,
        max(case when seqnum = 1 then party end) as WinningParty,
        max(case when seqnum = 1 then leader end) as Winner1,
        max(case when seqnum = 1 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 1 then [leader percent] end) as WinnerPercent,
        max(case when seqnum = 2 then [candidate num] end) as Loser,
        max(case when seqnum = 2 then Votes end) as LosingVotes,
        max(case when seqnum = 2 then party end) as LosingParty,
        max(case when seqnum = 2 then leader2 end) as Loser2,
        max(case when seqnum = 2 then [leader2 percent] end) as LoserPercent,
        max(case when seqnum = 2 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 3 then title1 end) as title1,
        max(case when seqnum = 3 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 3 then [candidate num] end) as Winner,
        max(case when seqnum = 3 then Votes end) as WinningVotes,
        max(case when seqnum = 3 then party end) as WinningParty,
        max(case when seqnum = 3 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 3 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 4 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 4 then [candidate num] end) as Loser,
        max(case when seqnum = 4 then Votes end) as LosingVotes,
        max(case when seqnum = 4 then party end) as LosingParty,
        max(case when seqnum = 4 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 4 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 5 then title1 end) as title1,
        max(case when seqnum = 5 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 5 then [candidate num] end) as Winner,
        max(case when seqnum = 5 then Votes end) as WinningVotes,
        max(case when seqnum = 5 then party end) as WinningParty,
        max(case when seqnum = 5 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 5 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 6 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 6 then [candidate num] end) as Loser,
        max(case when seqnum = 6 then Votes end) as LosingVotes,
        max(case when seqnum = 6 then party end) as LosingParty,
        max(case when seqnum = 6 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 6 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 7 then title1 end) as title1,
        max(case when seqnum = 7 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 7 then [candidate num] end) as Winner,
        max(case when seqnum = 7 then Votes end) as WinningVotes,
        max(case when seqnum = 7 then party end) as WinningParty,
        max(case when seqnum = 7 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 7 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 8 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 8 then [candidate num] end) as Loser,
        max(case when seqnum = 8 then Votes end) as LosingVotes,
        max(case when seqnum = 8 then party end) as LosingParty,
        max(case when seqnum = 8 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 8 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 9 then title1 end) as title1,
        max(case when seqnum = 9 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 9 then [candidate num] end) as Winner,
        max(case when seqnum = 9 then Votes end) as WinningVotes,
        max(case when seqnum = 9 then party end) as WinningParty,
        max(case when seqnum = 9 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 9 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 10 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 10 then [candidate num] end) as Loser,
        max(case when seqnum = 10 then Votes end) as LosingVotes,
        max(case when seqnum = 10 then party end) as LosingParty,
        max(case when seqnum = 10 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 10 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 11 then title1 end) as title1,
        max(case when seqnum = 11 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 11 then [candidate num] end) as Winner,
        max(case when seqnum = 11 then Votes end) as WinningVotes,
        max(case when seqnum = 11 then party end) as WinningParty,
        max(case when seqnum = 11 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 11 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 12 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 12 then [candidate num] end) as Loser,
        max(case when seqnum = 12 then Votes end) as LosingVotes,
        max(case when seqnum = 12 then party end) as LosingParty,
        max(case when seqnum = 12 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 12 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 13 then title1 end) as title1,
        max(case when seqnum = 13 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 13 then [candidate num] end) as Winner,
        max(case when seqnum = 13 then Votes end) as WinningVotes,
        max(case when seqnum = 13 then party end) as WinningParty,
        max(case when seqnum = 13 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 13 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 14 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 14 then [candidate num] end) as Loser,
        max(case when seqnum = 14 then Votes end) as LosingVotes,
        max(case when seqnum = 14 then party end) as LosingParty,
        max(case when seqnum = 14 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 14 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 15 then title1 end) as title1,
        max(case when seqnum = 15 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 15 then [candidate num] end) as Winner,
        max(case when seqnum = 15 then Votes end) as WinningVotes,
        max(case when seqnum = 15 then party end) as WinningParty,
        max(case when seqnum = 15 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 15 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 16 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 16 then [candidate num] end) as Loser,
        max(case when seqnum = 16 then Votes end) as LosingVotes,
        max(case when seqnum = 16 then party end) as LosingParty,
        max(case when seqnum = 16 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 16 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 17 then title1 end) as title1,
        max(case when seqnum = 17 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 17 then [candidate num] end) as Winner,
        max(case when seqnum = 17 then Votes end) as WinningVotes,
        max(case when seqnum = 17 then party end) as WinningParty,
        max(case when seqnum = 17 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 17 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 18 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 18 then [candidate num] end) as Loser,
        max(case when seqnum = 18 then Votes end) as LosingVotes,
        max(case when seqnum = 18 then party end) as LosingParty,
        max(case when seqnum = 18 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 18 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 19 then title1 end) as title1,
        max(case when seqnum = 19 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 19 then [candidate num] end) as Winner,
        max(case when seqnum = 19 then Votes end) as WinningVotes,
        max(case when seqnum = 19 then party end) as WinningParty,
        max(case when seqnum = 19 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 19 then CAST(winner AS tinyint) end) as WinnerSelected,
        max(case when seqnum = 20 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 20 then [candidate num] end) as Loser,
        max(case when seqnum = 20 then Votes end) as LosingVotes,
        max(case when seqnum = 20 then party end) as LosingParty,
        max(case when seqnum = 20 then [first name]+[last name] end) as Loser,
        max(case when seqnum = 20 then CAST(winner AS tinyint) end) as LoserSelected,
        max(case when seqnum = 21 then title1 end) as title1,
        max(case when seqnum = 21 then [precinct percent] end) as PrecintPercent,
        max(case when seqnum = 21 then [candidate num] end) as Winner,
        max(case when seqnum = 21 then Votes end) as WinningVotes,
        max(case when seqnum = 21 then party end) as WinningParty,
        max(case when seqnum = 21 then [first name]+[last name] end) as Winner,
        max(case when seqnum = 21 then CAST(winner AS tinyint) end) as WinnerSelected
    
    from 
    (
    select  
            r.title1,
            r.[precinct percent],
            rc.[race number],
            rc.[candidate num],
            rc.[Votes],
            rc.[winner],
            c.[party],
            r.[leader],
            r.[leader percent],
            r.[leader2],
            r.[leader2 percent],
            c.[first name],
            c.[last name],
    
    
                row_number() over (partition by rc.[race number] order by votes desc) as seqnum
        from    dbo.[RACE CANDIDATES] rc
        inner join dbo.[CANDIDATE] c    on  rc.[candidate num]  = c.[candidate number]
        inner join dbo.[RACE] r
         on rc.[race number] = r.[race number] 
    
    ) rc
    group by rc.[race number]
    FOR XML PATH ('ELECTION'), ROOT('root')
    This is the XML output from one of the races:

    Code:
    <ELECTION>
        <RaceNumber>149</RaceNumber>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5213</Winner>
        <WinningVotes>5140</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner1>Janice May</Winner1>
        <WinnerSelected>1</WinnerSelected>
        <WinnerPercent>7</WinnerPercent>
        <Loser>5215</Loser>
        <LosingVotes>4690</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser2>Ted Sturtevant</Loser2>
        <LoserPercent>7</LoserPercent>
        <LoserSelected>1</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5214</Winner>
        <WinningVotes>4564</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JohnSovanski</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5221</Loser>
        <LosingVotes>4368</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>RogerGradert</Loser>
        <LoserSelected>1</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5220</Winner>
        <WinningVotes>4321</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>ThomasMay</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5225</Loser>
        <LosingVotes>4168</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>DennisAnderson</Loser>
        <LoserSelected>1</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5216</Winner>
        <WinningVotes>4123</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JamesFindley</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5217</Loser>
        <LosingVotes>4036</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser>ThomasWiley</Loser>
        <LoserSelected>1</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5222</Winner>
        <WinningVotes>4031</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>KippyNelson</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5230</Loser>
        <LosingVotes>3937</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>WilliamLesage</Loser>
        <LoserSelected>0</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5228</Winner>
        <WinningVotes>3832</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>KelliParsons</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5227</Loser>
        <LosingVotes>3739</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>MarshallJones</Loser>
        <LoserSelected>0</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5229</Winner>
        <WinningVotes>3638</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>TerrySears</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5223</Loser>
        <LosingVotes>3531</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>RebekahMcCaw</Loser>
        <LoserSelected>0</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5218</Winner>
        <WinningVotes>3418</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>EricHollaway</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5226</Loser>
        <LosingVotes>3184</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>ThomasMillsaps</Loser>
        <LoserSelected>0</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5219</Winner>
        <WinningVotes>3102</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>SammieBorst</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5224</Loser>
        <LosingVotes>3003</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>DonaldDedobbelaere</Loser>
        <LoserSelected>0</LoserSelected>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5374</Winner>
        <WinningVotes>0</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JamesKursock</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5375</Loser>
        <LosingVotes>0</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser>JerryThompson</Loser>
        <LoserSelected>1</LoserSelected>
      </ELECTION>
    I am trying to get the output to be like this:

    Code:
     <ELECTION>
        <RaceNumber>149</RaceNumber>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5213</Winner>
        <WinningVotes>5140</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner1>Janice May</Winner1>
        <WinnerSelected>1</WinnerSelected>
        <WinnerPercent>7</WinnerPercent>
        <Loser>5215</Loser>
        <LosingVotes>4690</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser2>Ted Sturtevant</Loser2>
        <LoserPercent>7</LoserPercent>
        <LoserSelected>1</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5214</Winner>
        <WinningVotes>4564</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JohnSovanski</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5221</Loser>
        <LosingVotes>4368</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>RogerGradert</Loser>
        <LoserSelected>1</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5220</Winner>
        <WinningVotes>4321</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>ThomasMay</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5225</Loser>
        <LosingVotes>4168</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>DennisAnderson</Loser>
        <LoserSelected>1</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5216</Winner>
        <WinningVotes>4123</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JamesFindley</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5217</Loser>
        <LosingVotes>4036</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser>ThomasWiley</Loser>
        <LoserSelected>1</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5222</Winner>
        <WinningVotes>4031</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>KippyNelson</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5230</Loser>
        <LosingVotes>3937</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>WilliamLesage</Loser>
        <LoserSelected>0</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5228</Winner>
        <WinningVotes>3832</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>KelliParsons</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5227</Loser>
        <LosingVotes>3739</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>MarshallJones</Loser>
        <LoserSelected>0</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5229</Winner>
        <WinningVotes>3638</WinningVotes>
        <WinningParty>R</WinningParty>
        <Winner>TerrySears</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5223</Loser>
        <LosingVotes>3531</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>RebekahMcCaw</Loser>
        <LoserSelected>0</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5218</Winner>
        <WinningVotes>3418</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>EricHollaway</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5226</Loser>
        <LosingVotes>3184</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>ThomasMillsaps</Loser>
        <LoserSelected>0</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5219</Winner>
        <WinningVotes>3102</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>SammieBorst</Winner>
        <WinnerSelected>0</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5224</Loser>
        <LosingVotes>3003</LosingVotes>
        <LosingParty>R</LosingParty>
        <Loser>DonaldDedobbelaere</Loser>
        <LoserSelected>0</LoserSelected>
    </ELECTION>
    <ELECTION>
        <title1>Henry County Board Dist. 2</title1>
        <PrecintPercent>100</PrecintPercent>
        <Winner>5374</Winner>
        <WinningVotes>0</WinningVotes>
        <WinningParty>D</WinningParty>
        <Winner>JamesKursock</Winner>
        <WinnerSelected>1</WinnerSelected>
        <PrecintPercent>100</PrecintPercent>
        <Loser>5375</Loser>
        <LosingVotes>0</LosingVotes>
        <LosingParty>D</LosingParty>
        <Loser>JerryThompson</Loser>
        <LoserSelected>1</LoserSelected>
      </ELECTION>
    Does anyone think this is possible? I willing to do anything to get this to work. I am not concerned about performance, just as long as the query/xml creating can be done within 60 seconds. It is with great anxiety, I await anyones response. Thank You
Working...