none
Outer Join rada ...

    Dotaz

  • Dobrý den,

    mám vnořený dotaz :

    LEFT OUTER JOIN
                              (SELECT     CisloFA, LEFT(LTRIM(STR(CisloFA)), 6) AS DenikSmlouva, SUM(Celkem) AS CelkemUhrada
                                FROM          dbo.UcDenik
                               GROUP BY CisloFA) Uhrady ON LEFT(LTRIM(STR(Uhrady.CisloFA)), 6) = LTRIM(STR(dbo.Smlouvy.Smlouva))

    Ve výstupu vidím něco jako :

    CisloFa          CelkemUhrada DenikSmlouva                        
    10000101              100            101001
    10000102              200            101001
    10000103              600            101001

    Potřebuju Celý výstup nagroupovat za DenikSmlouva ale nejde mě to, když dám do Group BY

     GROUP BY LEFT(LTRIM(STR(CisloFA)), 6)) Uhrady ON LEFT(LTRIM(STR(Uhrady.CsiloFA)), 6) = LTRIM(STR(dbo.Smlouvy.Smlouva))

    objeví se chyba : CisloFA invalid

    Asi budu muset udělat sólo dotaz jestli mě nikdo neporadí ... :-) ... nebo si konečně přečíst nějakou příručku

    Děkuji !!

    18. dubna 2014 8:12

Odpovědi

  • Dobrý den,

    jestli to správně chápu, tak atribut CisloFA nemůže být v SELECTu. Tady je (ne)funkční příklad pro ukázku:

    create table #a (cislo bigint, cislo2 bigint)
    insert into #a values (10, 157)
    insert into #a values (20, 1479)
    insert into #a values (25, 4357)
    insert into #a values (12, 1047)
    
    select 
    	SUM(cislo),
    	--cislo2,
    	LEFT(LTRIM(STR(cislo2)), 2)
    from
    	#a
    group by
    	LEFT(LTRIM(STR(cislo2)), 2)
    
    drop table #a

    Když se odkomentuje cislo2, tak příkaz selže, protože se GROUPuje podle prvních dvou znaků a tím pádem nedokáže vrátit celou část.

    Pokud to není odpověď na vaši otázku, zkuste napsat příklad.

    S pozdravem

    Tomáš Adámek

    18. dubna 2014 18:58