-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNumber of Episodes Function.sql
65 lines (59 loc) · 3.12 KB
/
Number of Episodes Function.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
USE [CIA]
GO
/****** Object: UserDefinedFunction [dbo].[island_func] Script Date: 28.04.2013 05:25:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Tim
-- Create date: 25.04.2013
-- Description: Returns number of episodes for specific area, employee and client
-- =============================================
CREATE FUNCTION [dbo].[island_func]
(
@terrID nvarchar(50),
@empID nvarchar(50),
@clientID nvarchar(50)
)
RETURNS int
AS
BEGIN
DECLARE @ret int;
WITH
one AS (
SELECT
DATEPART(wk,d.[Date]) AS 'Date',
DATEPART(yyyy,d.[Date]) AS 'Year'
FROM [CIA].[dbo].[FactSalesCalls] AS f
LEFT OUTER JOIN [CIA].[dbo].[DimCallsDate] AS d
ON d.DateID = f.DateID
LEFT OUTER JOIN [CIA].[dbo].[DimCallsActivity] AS a
ON a.ActivityID = f.ActivityID
LEFT OUTER JOIN [CIA].[dbo].[DimCallsClient] AS c
ON c.ClientID = f.ClientID
LEFT OUTER JOIN [CIA].[dbo].[DimCallsEmp] AS e
ON e.EmpID = f.EmpID
WHERE c.[X Cov Ident] = @terrID
AND c.[X Client Id] = @clientID
AND e.[Ident User Id] =@empID
GROUP BY DATEPART(wk,[Date]), DATEPART(yyyy,[Date])
),
islands AS (
SELECT
*,
ROW_NUMBER() OVER (ORDER BY one.Date) - one.Date AS grp
FROM one
),
islands2 AS (
SELECT
*,
(ROW_NUMBER() OVER (PARTITION BY grp ORDER BY [Date]) - [Date])*-1 islandgroups
FROM islands)
SELECT
@ret = COUNT(DISTINCT(islandgroups))
FROM islands2
Return @ret;
END
/*To Do: integrate ID dependency
'/