Subject: Re: Problem with sum values with double param
From: Jacek Dunia <duniaj@xxxxxxxxxxxx>
Date: Wed, 5 Aug 2009 17:09:22 +0200
|
Hello,
Thank you Martin for your help, you 're right. I correct my template
from mistakes:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="list" match="/Calls/Row" use="TechnicianName" />
<xsl:key name="pbType" match="/Calls/Row" use="ProblemType" />
<xsl:key name="Rc" match="/Calls/Row" use="Rc" />
<xsl:template match="Calls">
<html>
<body>
<xsl:variable name="var_TechnicianNamess"
select="/Calls/Row[count(. | key('list', TechnicianName)[1]) = 1]"/>
<xsl:for-each select="$var_TechnicianNamess">
<br />
<xsl:value-of select="TechnicianName" />
<xsl:value-of select="sum(key('list', TechnicianName)/WorkTime)"/>
<br />
<xsl:value-of select="sum(key('pbType', 'INCYDENT')/WorkTime)" /><br />
<xsl:value-of select="sum(key('pbType', 'FAILURE')/WorkTime)" /><br />
<xsl:value-of select="count(key('Rc', 'InTime'))"/><br />
<xsl:value-of select="count(key('Rc', 'OutOfTime'))"/><br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
But my main problem remains, namely how to make other columns per
Technican. When I normal use funcion sum() or count() with function
key() I get values for all technicans, and I would like get for each
technican.
like this:
Name TotalWorkTimeByIncydent TotalWorkTimeByFailure TotalWorkTime InTime
OutOfTime
Peter 30 0 30 1 1
Norman 40 150 200 2 1
Thanks&Kind Regards,
Jack
2009/8/5 Martin Honnen <Martin.Honnen@xxxxxx>:
> Jacek Dunia wrote:
>
>> <Calls>
>> <Row NR="1">
>> <Rc>InTime</Rc>
>> <WorkTime>20</WorkTime>
>> <TechnicianName>Norman</TechnicianName>
>> <ProblemType>INCYDENT</ProblemType>
>> </Row>
>> <Row NR="2">
>> <Rc>OutTime</Rc>
>> <WorkTime>10</WorkTime>
>> <TechnicianName>Peter</TechnicianName>
>> <ProblemType>INCYDENT</ProblemType>
>> </Row>
>> <Row NR="3">
>> <Rc>InTime</Rc>
>> <WorkTime>150</WorkTime>
>> <TechnicianName>Norman</TechnicianName>
>> <ProblemType>FAILURE</ProblemType>
>> </Row>
>> <Row NR="4">
>> <Rc>OutOfTime</Rc>
>> <WorkTime>10</WorkTime>
>> <TechnicianName>Norman</TechnicianName>
>> <ProblemType>RemoteAccess</ProblemType>
>> </Row>
>> <Row NR="5">
>> <Rc>InTime</Rc>
>> <WorkTime>20</WorkTime>
>> <TechnicianName>Norman</TechnicianName>
>> <ProblemType>INCYDENT</ProblemType>
>> </Row>
>> <Row NR="6">
>> <Rc>InTime</Rc>
>> <WorkTime>20</WorkTime>
>> <TechnicianName>Peter</TechnicianName>
>> <ProblemType>INCYDENT</ProblemType>
>> </Row>
>> I would like get following out put
>> Name TotalWorkTimeByIncydent TotalWorkTimeByFailure TotalWorkTime
>> InTime OutOfTime
>> Peter 30 0 30 1
>> 1
>> Norman 40 150 200 2
>> 1
>>
>> Thecnican name can't be duplicate so I make like this:
>> <?xml version="1.0" encoding="UTF-8"?>
>> <xsl:stylesheet version="1.0"
>> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>>
>> <xsl:key name="list" match="/Activities/Row" use="TechnicianNames"
>> />
>
> The root element you show in your XML sample is named 'Calls', not
> 'Activities' so I would expect match="Calls/Row".
>
>> <xsl:template match="Activities">
>
> Same here, shouldn't that be match="Calls"?
>
>> <html>
>> <body>
>> <xsl:variable name="var_TechnicianNamess"
>> select="/Activities/Row[count(. | key('list', TechnicianName)[1]) =
>> 1]"/>
>> <xsl:for-each
>> select="$var_TechnicianNamess">
>> <xsl:value-of
>> select="TechnicianName" />
>> <xsl:value-of
>> select="sum(WorkMinute)" />
>
> I think you want
> <xsl:value-of
select="sum(key('list',
> TechnicianName)/WorkMinute)"/>
>
> to sum up the WorkMinute(s) for each Technician.
>
>
>
>
> --
>
> Martin Honnen
> http://msmvps.com/blogs/martin_honnen/
|