mardi 27 février 2018

How to write valid If clause inside select or write function

I have procedure like this and I get error in If clause. I think it is because COUNT. But my clause have to be like that so I don't know how to solve it. Maybe it would be good to create a function or something similar. Rest of the code is okay

CREATE PROCEDURE DohvatiSveUgovore @zavodId int
    AS
    BEGIN
    DECLARE @TempUgovori TABLE
    (
         Id int,
         UstrojstvenaJedinica nvarchar(100),
         VrstaUgovora nvarchar(100),
         KlasaUgovora nvarchar(100),
         UrudzbeniBrojUgovora nvarchar(100),
         DatumPocetkaUgovora nvarchar(10),
         DatumIstekaUgovora nvarchar(10)
    )

    INSERT INTO @TempUgovori(Id, UstrojstvenaJedinica, VrstaUgovora, KlasaUgovora, UrudzbeniBrojUgovora, DatumPocetkaUgovora, DatumIstekaUgovora)
        SELECT 
        u.Id,
        ISNULL(STRING_AGG(LTRIM(RTRIM(z.SkraceniNaziv)), ', '), '') AS 'UstrojstvenaJedinica',
        vu.Naziv AS 'VrstaUgovora',
        ISNULL(u.KlasaUgovora, '') AS 'KlasaUgovora',
        ISNULL(u.UrudzbeniBrojUgovora, '') AS 'UrudzbeniBrojUgovora',
        (SELECT ISNULL(convert(varchar(10), u.DatumPocetkaUgovora, 104), '')) AS 'DatumPocetkaUgovora',
        (SELECT ISNULL(convert(varchar(10), u.DatumIstekaUgovora, 104), '')) AS 'DatumIstekaUgovora'
        FROM Ugovor AS u    
            LEFT JOIN VezaUgovorUstrojstvenaJedinica AS vuu
                ON u.Id = vuu.UgovorId
            INNER JOIN SifVrstaUgovora AS vu
                ON u.VrstaUgovoraId = vu.Id
            LEFT JOIN [TEST_MaticniPodaci2].hcphs.SifZavod AS z
                ON vuu.UstrojstvenaJedinicaId = z.Id                        

            if( (SELECT COUNT(UstrojstvenaJedinicaId)  FROM VezaUgovorUstrojstvenaJedinica WHERE UstrojstvenaJedinicaId =  'HCPHS') = 1)  
            begin
            (SELECT *  FROM  VezaUgovorUstrojstvenaJedinica WHERE UstrojstvenaJedinicaId =  'HCPHS')            
            end
            ELSE
            (SELECT * FROM  VezaUgovorUstrojstvenaJedinica WHERE  Isdeleted = 0  and UstrojstvenaJedinicaId = @zavodId)
            end 

ERROR is here in Group by and I don't know why.

GROUP BY u.Id, vu.Naziv, u.KlasaUgovora, u.UrudzbeniBrojUgovora, u.DatumPocetkaUgovora, u.DatumIstekaUgovora

            SELECT  
            tu.Id,
            tu.UstrojstvenaJedinica AS 'UstrojstvenaJedinica',
            tu.VrstaUgovora AS 'VrstaUgovora',
            tu.KlasaUgovora AS 'KlasaUgovora',
            tu.UrudzbeniBrojUgovora AS 'UrudzbeniBrojUgovora',
            tu.DatumIstekaUgovora AS 'DatumPocetkaUgovora',
            tu.DatumIstekaUgovora AS 'DatumIstekaUgovora',
            ISNULL(STRING_AGG(LTRIM(RTRIM(p.Naziv)), ', '), '') as 'Partner'
            FROM @TempUgovori AS tu
                LEFT JOIN VezaUgovorPartner AS vup
                    on tu.Id = vup.UgovorId
                LEFT JOIN [TEST_MaticniPodaci2].dbo.Partner as p
                    ON vup.PartnerId = p.PartnerID

            GROUP BY tu.Id, tu.UstrojstvenaJedinica, tu.VrstaUgovora, tu.KlasaUgovora, tu.UrudzbeniBrojUgovora, tu.DatumPocetkaUgovora, tu.DatumIstekaUgovora

        END


                EXEC [TEST_Ugovori_Prod].[dbo].[DohvatiSve] 6;  
                GO

I am sorry for too much code but without it I can't run query.

Aucun commentaire:

Enregistrer un commentaire