none
PDKS'de Tarih aralığında Personel Geldi yada Gelmedi göstermek RRS feed

  • Soru

  • Merhaba ;

    Aşağıdaki gibi bir sorgum var belirtilen tarih aralığında UserId tbl_Data tablosunda varsa 'Geldi' yoksa 'Gelmedi'

    olarak gösterilsin istiyorum.Yardımcı olur musunuz ?

    DECLARE @dt1 Datetime='06.04.2018'
    DECLARE @dt2 Datetime='06.15.2018'
    DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX)
    ;WITH ctedaterange
         AS (SELECT [Dates]=@dt1
             UNION ALL
             SELECT [dates] + 1
             FROM   ctedaterange
             WHERE  [dates] + 1<= @dt2)
    SELECT [dates]
    into #Tarihler
    FROM   ctedaterange
    OPTION (maxrecursion 0)

    select @cols = STUFF((SELECT distinct ',' + QUOTENAME(convert(CHAR(10), [dates], 120))
                        from #Tarihler
                FOR XML PATH(''), TYPE
                ).value('.', 'NVARCHAR(MAX)')
            ,1,1,'')

    select @cols

    set @query = 'SELECT Id, ad, soyad, kart_no, giris_saat + '':'' + giris_dakika as zaman1 , cikis_saat + '':'' + cikis_dakika as zaman2, ' + @cols + ' from
                 (
                    select b.Id, c.ad, c.soyad, c.CardStr kart_no, b.giris_saat, b.giris_dakika, b.cikis_saat, b.cikis_dakika,
                        d.[dates],
                        convert(CHAR(10), [dates], 120) PivotDate
                    from #Tarihler d
                    left join tbl_Data b
                        on d.[dates] between b.Tarih and b.Tarih
                        left join tbl_Personel c on b.UserId=c.UserId
                ) x
                pivot
                (
                    count([dates])
                    for PivotDate in (' + @cols + ')
                )p
                order by ad'

    execute(@query)

    drop table #Tarihler

    4 Temmuz 2018 Çarşamba 20:49

Tüm Yanıtlar