Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 5.04 KB | None | 0 0
  1. DECLARE @id int = 25
  2. DECLARE @from smalldatetime = '11/01/2016'
  3. DECLARE @to smalldatetime = '11/30/2016'
  4.  
  5. DECLARE @MonthDates TABLE ([date] date)
  6.  
  7. INSERT INTO @MonthDates
  8. SELECT Date = DateAdd( Day, n1.number * 10 + n0.number, @from )
  9. FROM (SELECT 1 AS number UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) as n0
  10. CROSS JOIN
  11. (SELECT 1 AS number UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0) as n1
  12. WHERE   DateAdd( Day, n1.number * 10 + n0.number, @from ) BETWEEN @from AND @to
  13.  
  14.  
  15. SELECT
  16.     ISNULL(Pruchody.id_zaznamu,0)
  17.     ,ISNULL(Pruchody.id_zamestnance,0)
  18.     ,ISNULL(P.popis,'nezadáno')
  19.     ,ISNULL(Pruchody.datum_pruchodu,'1900-01-01 00:00:00')
  20.     ,ISNULL(P2.popis,'nezadáno')
  21.     ,ISNULL(Pruchody.datum_odchodu,'1900-01-01 00:00:00')
  22.     ,ISNULL(Pruchody.cetnost_pristupu,0)
  23.     ,ISNULL(Pruchody.datum_zapisu,'1900-01-01 00:00:00')
  24.     ,ISNULL(Pruchody.zapsal_login,'noone')
  25.     ,CASE
  26.         WHEN ((Pruchody.datum_pruchodu is null) or (Pruchody.datum_odchodu is null)) THEN convert(numeric(10,2),0)
  27.         WHEN Pruchody.typ = 'P' THEN convert(numeric(10,2),round((dbo.VypocetOdprDoby(Pruchody.datum_pruchodu,Pruchody.datum_odchodu,Pruchody.id_zamestnance)/60.00 * 4), 0)/4)  
  28.         ELSE convert(numeric(10,2),round((DATEDIFF(MINUTE, Pruchody.datum_pruchodu, Pruchody.datum_odchodu)/60.00 * 4), 0)/4)
  29.     END
  30.     ,convert(varchar,MonthDates.Date,104)  
  31.     ,ISNULL(Pruchody.typ,'X')
  32.     ,ISNULL(Pruchody.typ_pruchodu,0)
  33.     ,ISNULL(Pruchody.typ_odchodu,0)
  34.     ,ISNULL(Pruchody.manualne,0)
  35. FROM
  36.     @MonthDates MonthDates
  37.     LEFT JOIN Pruchody ON (convert(varchar,MonthDates.Date,104) = convert(varchar,Pruchody.datum_pruchodu, 104) or convert(varchar,MonthDates.Date,104) = convert(varchar,Pruchody.datum_odchodu, 104) or Pruchody.datum_pruchodu = NULL) AND Pruchody.id_zamestnance = @id
  38.     LEFT JOIN c_Pruchody P on Pruchody.typ_pruchodu = P.id_pruchodu
  39.     LEFT JOIN c_Pruchody P2 on Pruchody.typ_odchodu = P2.id_pruchodu
  40. WHERE convert(varchar,MonthDates.Date,104)  not in (SELECT CASE WHEN meniSe = 1 THEN convert(varchar,datum_svatku,104) WHEN meniSe = 0 THEN convert(varchar,DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku),104) END FROM dbo.c_Svatky WHERE (DATENAME(DW, DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku)) not in ('Saturday','Sunday') and meniSe = 0) OR (meniSe = 1 and DATEPART(YEAR,datum_svatku) = DATEPART(year,@from)))
  41. UNION ALL
  42. SELECT
  43.     -1
  44.     ,@id
  45.     ,'Příchod'
  46.     , CASE
  47.         WHEN meniSe = 1 THEN DATEADD(hour,7,datum_svatku)
  48.         WHEN meniSe = 0 THEN DATEADD(hour,7,DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku))
  49.         END
  50.     ,'Odchod'
  51.     ,CASE
  52.         WHEN meniSe = 1 THEN DATEADD(minute,480,DATEADD(hour,7,datum_svatku))
  53.         WHEN meniSe = 0 THEN DATEADD(minute,480,DATEADD(hour,7,DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku)))
  54.         END
  55.     ,1
  56.     ,GETDATE()
  57.     ,'System'
  58.     ,8 
  59.     ,CASE
  60.         WHEN meniSe = 1 THEN convert(varchar,c_Svatky.datum_svatku,104)
  61.         WHEN meniSe = 0 THEN convert(varchar,DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku),104)
  62.     END
  63.     ,'K'
  64.     ,1
  65.     ,2
  66.     ,convert(bit,0)
  67. FROM c_Svatky
  68. WHERE ((DATENAME(DW, datum_svatku) not in ('Saturday','Sunday')) AND datum_svatku between @from and @to) OR (meniSe = 0 AND (DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku) between @from and @to/*GETDATE()*/) AND DATENAME(DW, DATEADD(YEAR,DATEDIFF(YEAR,datum_svatku,@from),datum_svatku)) not in ('Saturday','Sunday'))
  69. UNION ALL
  70. SELECT
  71.     ISNULL(Pruchody.id_zaznamu,0)
  72.     ,ISNULL(Pruchody.id_zamestnance,0)
  73.     ,ISNULL(P.popis,'nezadáno')
  74.     ,ISNULL(Pruchody.datum_pruchodu,'1900-01-01 00:00:00')
  75.     ,ISNULL(P2.popis,'nezadáno')
  76.     ,ISNULL(Pruchody.datum_odchodu,'1900-01-01 00:00:00')
  77.     ,ISNULL(Pruchody.cetnost_pristupu,0)
  78.     ,ISNULL(Pruchody.datum_zapisu,'1900-01-01 00:00:00')
  79.     ,ISNULL(Pruchody.zapsal_login,'noone')
  80.     ,CASE
  81.         WHEN ((Pruchody.datum_pruchodu is null) or (Pruchody.datum_odchodu is null)) THEN convert(numeric(10,2),0)
  82.         WHEN Pruchody.typ = 'P' THEN convert(numeric(10,2),round((dbo.VypocetOdprDoby(Pruchody.datum_pruchodu,Pruchody.datum_odchodu,Pruchody.id_zamestnance)/60.00 * 4), 0)/4)  
  83.         ELSE convert(numeric(10,2),round((DATEDIFF(MINUTE, Pruchody.datum_pruchodu, Pruchody.datum_odchodu)/60.00 * 4), 0)/4)
  84.     END
  85.     ,convert(varchar,MonthDates.Date,104)  
  86.     ,ISNULL(Pruchody.typ,'X')
  87.     ,ISNULL(Pruchody.typ_pruchodu,0)
  88.     ,ISNULL(Pruchody.typ_odchodu,0)
  89.     ,ISNULL(Pruchody.manualne,0)
  90. FROM
  91.     @MonthDates MonthDates
  92.     INNER JOIN Pruchody ON (convert(varchar,MonthDates.Date,104) = convert(varchar,Pruchody.datum_pruchodu, 104) or convert(varchar,MonthDates.Date,104) = convert(varchar,Pruchody.datum_odchodu, 104) or Pruchody.datum_pruchodu = NULL) AND Pruchody.id_zamestnance = @id
  93.     INNER JOIN c_Pruchody P on Pruchody.typ_pruchodu = P.id_pruchodu
  94.     INNER JOIN c_Pruchody P2 on Pruchody.typ_odchodu = P2.id_pruchodu
  95.     INNER JOIN c_Svatky SV on (SV.meniSe = 1 and SV.datum_svatku = [date]) or (SV.meniSe = 0 and DATEADD(YEAR,DATEDIFF(YEAR,SV.datum_svatku,@to),SV.datum_svatku) = [date])
  96. ORDER BY 11
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement