none
Pivot

    Dotaz

  •  

    Dobrý den. Jsem už trochu zoufalý. Používám funkci PIVOT pro otočení řádků do sloupců. Tato funkce má jednu špatnou vlastnost a to tu, že musím otáčený sloupec agregovat. Toto je pro mou potřebu nevýhodné, by dokonce špatné. Potřebuji ty hodnoty víckrát. Bude x řádků, kde je vše stejné až na ten jeden sloupec(v současné době agregovaný). Jak mám tento problém vyřešit.

    Moc děkuji.

    Petr Jůna

    pondělí 15. září 2008 8:55

Odpovědi

  • SQL2008 již obsahuje implementaci XQuery funkcí lower-case a upper-case, takže můžete standardně přes UPDATE-modify-replace.

    V SQL2005 je to docela peklo, lower-case a upper-case tam v XQuery nejsou podporovány, takže by asi nezbylo než si vyselectovat tu hodnotu atributu do nějaké temporary tabulky s příslušným klíčem, v tabulce udelat standardní UPDATE-SET-LOWER() a pak udělat XQuery-UPDATE zpět do XML.

     

    pondělí 15. září 2008 21:46
    Moderátor

Všechny reakce

  • Dobrý den,

    přiznám se, že při vší fantazii si neumím představit, čeho chcete dosáhnout.

    Můžete mi prosím napsat ukázku vstupních dat a ukázku požadovaného výstupu?

     

    pondělí 15. září 2008 11:54
    Moderátor
  • Již jsem to vyřešil. Tedy obešel, moc děkuji. Přesto bych se zeptal dál. Jde o XML práci v SQL.

    Mám položku ve sloupci XML viz níže a potřebuji všechny <UserItem Value="1.m je 1220" /> přesněji hodnotu Value převést na malá písmena. Prosím o radu, děkuji. Petr Jůna

    <Item ID="1162" Name="dip ro§nov pod radhoçtŘm" DefName="lokalita" ContainerName="dip býeznice">

    <Attributes>

    <Atts>

    <Att AttValID="4630" AttDefID="25" Name="źˇslo" DefName="lokalita" ContainerName="dip býeznice">

    <UserItem Value="81022" />

    </Att>

    <Att AttValID="4628" AttDefID="26" Name="mŘsto" DefName="lokalita" ContainerName="dip býeznice">

    <UserItem Value="Ro§nov pod RadhoçtŘm" />

    </Att>

    <Att AttValID="4627" AttDefID="27" Name="ulice" DefName="lokalita" ContainerName="dip býeznice">

    <UserItem Value="1.m je 1220" />

    </Att>

    <Att AttValID="4629" AttDefID="28" Name="typ" DefName="lokalita" ContainerName="dip býeznice">

    <UserItem Value="DiP" />

    </Att>

    <Att AttValID="6286" AttDefID="29" Name="nadýˇzen  lokalita" DefName="lokalita" ContainerName="dip býeznice">

    <Item ID="607" Name="Łp vsetˇn" DefName="lokalita" ContainerName="dip býeznice">

    <Attributes>

    <Atts>

    <Att AttValID="2412" AttDefID="27" Name="Ulice">

    <UserItem Value="Pod ¦amboçkou 1024" />

    </Att>

    <Att AttValID="2413" AttDefID="26" Name="MŘsto">

    <UserItem Value="Vsetˇn" />

    </Att>

    <Att AttValID="2414" AttDefID="28" Name="Typ">

    <UserItem Value="éP" />

    </Att>

    <Att AttValID="2415" AttDefID="25" Name="¬ˇslo">

    <UserItem Value="81020" />

    </Att>

    <Att AttValID="5390" AttDefID="30" Name="PS¬">

    <UserItem Value="755 01" />

    </Att>

    </Atts>

    </Attributes>

    </Item>

    </Att>

    <Att AttValID="5538" AttDefID="30" Name="psź" DefName="lokalita" ContainerName="dip býeznice">

    <UserItem Value="756 61" />

    </Att>

    </Atts>

    </Attributes>

    </Item>

     

    pondělí 15. září 2008 13:33
  • SQL2008 již obsahuje implementaci XQuery funkcí lower-case a upper-case, takže můžete standardně přes UPDATE-modify-replace.

    V SQL2005 je to docela peklo, lower-case a upper-case tam v XQuery nejsou podporovány, takže by asi nezbylo než si vyselectovat tu hodnotu atributu do nějaké temporary tabulky s příslušným klíčem, v tabulce udelat standardní UPDATE-SET-LOWER() a pak udělat XQuery-UPDATE zpět do XML.

     

    pondělí 15. září 2008 21:46
    Moderátor
  • Myslíte, že by jste byl ochoten napsat příkládek?Děkuji.

     

    úterý 16. září 2008 6:23