Project

General

Profile

DB_STATUS_ASSET_QUANTITY_BAR.txt

Luc Tran Van, 03/03/2023 01:36 PM

 
1
-- BIEU DO O1 TINH TRANG TAI SAN (SO LUONG)
2
ALTER   PROC [dbo].[DB_STATUS_ASSET_QUANTITY_BAR]
3
@p_USER_LOGIN VARCHAR(250) = NULL,
4
@p_TYPE_ID VARCHAR(5) = NULL,
5
@p_GROUP_ID VARCHAR(15) = NULL,
6
@p_BRANCH_ID VARCHAR(15) = NULL,
7
@p_FROM_MONTH VARCHAR(2) = NULL,
8
@p_TO_MONTH VARCHAR(2) = NULL,
9
@p_FROM_YEAR VARCHAR(4) = NULL,
10
@p_TO_YEAR VARCHAR(4) = NULL,
11
@p_FILTER VARCHAR(100) = NULL
12
AS
13
BEGIN
14

    
15
	DECLARE @BRANCH_LOGIN varchar(15) ='', @DEP_LOGIN varchar(15) =''
16
	SELECT @DEP_LOGIN = SECUR_CODE, @BRANCH_LOGIN = TLSUBBRID FROM TL_USER WHERE TLNANME = @p_USER_LOGIN
17

    
18
  IF(NOT EXISTS(SELECT * FROM CM_DEPARTMENT cd WHERE cd.BRANCH_ID = @BRANCH_LOGIN AND cd.DEP_ID = @DEP_LOGIN AND (cd.DEP_CODE = '0690604' OR cd.DEP_CODE = '0690802' OR cd.DEP_CODE = '0690803')))
19
  BEGIN
20
    IF(@BRANCH_LOGIN = 'DV0001') SET @p_BRANCH_ID = @DEP_LOGIN
21
    ELSE SET @p_BRANCH_ID = @BRANCH_LOGIN
22
  END
23

    
24
  IF(@p_FILTER = 'year')
25
  BEGIN
26
	SELECT DISTINCT 
27
		YEAR(A.USE_DATE_KT) AS YEAR, COUNT(*) AS TOTAL_COUNT
28
	FROM ASS_MASTER A
29
	WHERE 1=1
30
	AND A.USE_DATE_KT IS NOT NULL
31
	AND (YEAR(USE_DATE_KT)<= CAST(@p_TO_YEAR AS INT) OR CAST(@p_TO_YEAR AS INT) IS NULL OR CAST(@p_TO_YEAR AS INT) ='')
32
	AND (YEAR(USE_DATE_KT)>= CAST(@p_FROM_YEAR AS INT) OR CAST(@p_FROM_YEAR AS INT) IS NULL OR CAST(@p_FROM_YEAR AS INT) ='')
33
	AND (A.TYPE_ID=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
34
	AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
35
	AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
36
	AND (MONTH(A.USE_DATE_KT)>= CAST(@p_FROM_MONTH AS INT) OR CAST(@p_FROM_MONTH AS INT) IS NULL OR CAST(@p_FROM_MONTH AS INT) ='')
37
	AND (MONTH(A.USE_DATE_KT)<= CAST(@p_TO_MONTH AS INT) OR CAST(@p_TO_MONTH AS INT) IS NULL OR CAST(@p_TO_MONTH AS INT) ='')
38
	GROUP BY YEAR(USE_DATE_KT)
39
	ORDER BY YEAR(USE_DATE_KT) ASC
40

    
41
	DECLARE @YEAR INT
42
	DECLARE @TABLE TABLE(
43
		USE_DATE_KT NVARCHAR(100) NULL,
44
		TOTAL_COUNT INT NULL,
45
		[YEAR] VARCHAR(10) NULL
46
	)
47
	DECLARE CUR_FILTER_YEAR CURSOR FOR
48
	SELECT DISTINCT 
49
		YEAR(USE_DATE_KT) AS USE_DATE_KT
50
	FROM ASS_MASTER A WHERE 1=1
51
	AND USE_DATE_KT IS NOT NULL
52
	AND (YEAR(USE_DATE_KT)<= CAST(@p_TO_YEAR AS INT) OR CAST(@p_TO_YEAR AS INT) IS NULL OR CAST(@p_TO_YEAR AS INT) ='')
53
	AND (YEAR(USE_DATE_KT)>= CAST(@p_FROM_YEAR AS INT) OR CAST(@p_FROM_YEAR AS INT) IS NULL OR CAST(@p_FROM_YEAR AS INT) ='')
54
	AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
55
	AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
56
	AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
57
	AND (MONTH(A.USE_DATE_KT)>= CAST(@p_FROM_MONTH AS INT) OR CAST(@p_FROM_MONTH AS INT) IS NULL OR CAST(@p_FROM_MONTH AS INT) ='')
58
	AND (MONTH(A.USE_DATE_KT)<= CAST(@p_TO_MONTH AS INT) OR CAST(@p_TO_MONTH AS INT) IS NULL OR CAST(@p_TO_MONTH AS INT) ='')
59
	OPEN CUR_FILTER_YEAR
60

    
61
	FETCH NEXT FROM CUR_FILTER_YEAR
62
		  INTO @YEAR
63

    
64
	WHILE @@FETCH_STATUS = 0
65
	BEGIN
66
		INSERT INTO @TABLE(USE_DATE_KT,TOTAL_COUNT,[YEAR])
67
		(
68
			SELECT N'0 - 3 năm' BUY_DATE_KT,COUNT(*) AS TOTAL_COUNT,@YEAR AS [YEAR] FROM ASS_MASTER A
69
			WHERE 1=1
70
			AND (@YEAR-YEAR(USE_DATE_KT) >= 0)
71
			AND (@YEAR-YEAR(USE_DATE_KT) <= 3)
72
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
73
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
74
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
75
			AND (MONTH(A.USE_DATE_KT)>= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH ='')
76
			AND (MONTH(A.USE_DATE_KT)<= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH ='')
77
		)
78
		UNION ALL
79
		(
80
			SELECT N'3 - 5 năm' USE_DATE_KT,COUNT(*) AS TOTAL_COUNT,@YEAR AS [YEAR] FROM ASS_MASTER A
81
			WHERE 1=1
82
			AND (@YEAR-YEAR(USE_DATE_KT) > 3)
83
			AND (@YEAR-YEAR(USE_DATE_KT) <= 5)
84
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
85
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
86
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
87
			AND (MONTH(A.USE_DATE_KT)>= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH ='')
88
			AND (MONTH(A.USE_DATE_KT)<= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH ='')	
89
		)
90
		UNION ALL
91
		(
92
			SELECT N'Trên 5 năm' USE_DATE_KT,COUNT(*) AS TOTAL_COUNT,@YEAR AS [YEAR] FROM ASS_MASTER A
93
			WHERE 1=1
94
			AND (@YEAR-YEAR(USE_DATE_KT) > 5)
95
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
96
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
97
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
98
			AND (MONTH(A.USE_DATE_KT)>= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH ='')
99
			AND (MONTH(A.USE_DATE_KT)<= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH ='')	
100
		)
101

    
102
		FETCH NEXT FROM CUR_FILTER_YEAR
103
			  INTO @YEAR
104
	END
105

    
106
	CLOSE CUR_FILTER_YEAR
107
	DEALLOCATE CUR_FILTER_YEAR
108

    
109
	SELECT * FROM @TABLE
110
	ORDER BY [YEAR] ASC
111

    
112
  END
113
  ELSE IF(@p_FILTER = 'month')
114
  BEGIN
115
	SELECT DISTINCT 
116
		MONTH(A.USE_DATE_KT) AS [YEAR], COUNT(*) AS TOTAL_COUNT
117
	FROM ASS_MASTER A
118
	WHERE 1=1
119
	AND A.USE_DATE_KT IS NOT NULL
120
	AND (YEAR(USE_DATE_KT) <= CAST(@p_TO_YEAR AS INT) OR CAST(@p_TO_YEAR AS INT) IS NULL OR CAST(@p_TO_YEAR AS INT) ='')
121
	AND (A.TYPE_ID=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
122
	AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
123
	AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
124
	AND (MONTH(A.USE_DATE_KT)>= CAST(@p_FROM_MONTH AS INT) OR CAST(@p_FROM_MONTH AS INT) IS NULL OR CAST(@p_FROM_MONTH AS INT) ='')
125
	AND (MONTH(A.USE_DATE_KT)<= CAST(@p_TO_MONTH AS INT) OR CAST(@p_TO_MONTH AS INT) IS NULL OR CAST(@p_TO_MONTH AS INT) ='')
126
	GROUP BY MONTH(USE_DATE_KT)
127
	ORDER BY MONTH(USE_DATE_KT) ASC
128

    
129
	DECLARE @MONTH INT
130
	DECLARE @TABLE_MONTH TABLE(
131
		USE_DATE_KT NVARCHAR(100) NULL,
132
		TOTAL_COUNT INT NULL,
133
		[YEAR] INT NULL
134
	)
135
	DECLARE CUR_FILTER_YEAR CURSOR FOR
136
	SELECT DISTINCT 
137
		MONTH(USE_DATE_KT) AS USE_DATE_KT
138
	FROM ASS_MASTER A WHERE 1=1
139
	AND USE_DATE_KT IS NOT NULL
140
	AND (YEAR(USE_DATE_KT) <= CAST(@p_TO_YEAR AS INT) OR CAST(@p_TO_YEAR AS INT) IS NULL OR CAST(@p_TO_YEAR AS INT) ='')
141
	AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
142
	AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
143
	AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
144
	AND (MONTH(A.USE_DATE_KT)>= CAST(@p_FROM_MONTH AS INT) OR CAST(@p_FROM_MONTH AS INT) IS NULL OR CAST(@p_FROM_MONTH AS INT) ='')
145
	AND (MONTH(A.USE_DATE_KT)<= CAST(@p_TO_MONTH AS INT) OR CAST(@p_TO_MONTH AS INT) IS NULL OR CAST(@p_TO_MONTH AS INT) ='')
146
	OPEN CUR_FILTER_YEAR
147

    
148
	FETCH NEXT FROM CUR_FILTER_YEAR
149
		  INTO @MONTH
150

    
151
	WHILE @@FETCH_STATUS = 0
152
	BEGIN
153
		INSERT INTO @TABLE_MONTH(USE_DATE_KT,TOTAL_COUNT,[YEAR])
154
		(
155
			SELECT N'0 - 3 năm' BUY_DATE_KT,COUNT(*) AS TOTAL_COUNT,@MONTH AS [YEAR] FROM ASS_MASTER A
156
			WHERE 1=1
157
			AND (CAST(@p_TO_YEAR AS INT)-YEAR(USE_DATE_KT) >= 0)
158
			AND (MONTH(A.USE_DATE_KT) <= CAST(@MONTH AS INT))
159
			AND (CAST(@p_TO_YEAR AS INT)-YEAR(USE_DATE_KT) <= 3)
160
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
161
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
162
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
163
		)
164
		UNION ALL
165
		(
166
			SELECT N'3 - 5 năm' USE_DATE_KT,COUNT(*) AS TOTAL_COUNT,@MONTH AS [YEAR] FROM ASS_MASTER A
167
			WHERE 1=1
168
			AND (CAST(@p_TO_YEAR AS INT)-YEAR(USE_DATE_KT) > 3)
169
			AND (MONTH(A.USE_DATE_KT) <= CAST(@MONTH AS INT))
170
			AND (CAST(@p_TO_YEAR AS INT)-YEAR(USE_DATE_KT) <= 5)
171
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
172
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
173
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
174
		)
175
		UNION ALL
176
		(
177
			SELECT N'Trên 5 năm' USE_DATE_KT,COUNT(*) AS TOTAL_COUNT,@MONTH AS [YEAR] FROM ASS_MASTER A
178
			WHERE 1=1
179
			AND (CAST(@p_TO_YEAR AS INT)-YEAR(USE_DATE_KT) > 5)
180
			AND (MONTH(A.USE_DATE_KT) <= CAST(@MONTH AS INT))
181
			AND (A.[TYPE_ID]=@p_TYPE_ID OR @p_TYPE_ID IS NULL OR @p_TYPE_ID ='')
182
			AND (A.GROUP_ID=@p_GROUP_ID OR @p_GROUP_ID IS NULL OR @p_GROUP_ID ='')
183
			AND (A.BRANCH_ID=@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR A.DEPT_ID = @p_BRANCH_ID)
184
		)
185

    
186
		FETCH NEXT FROM CUR_FILTER_YEAR
187
			  INTO @MONTH
188
	END
189

    
190
	CLOSE CUR_FILTER_YEAR
191
	DEALLOCATE CUR_FILTER_YEAR
192

    
193
	SELECT * FROM @TABLE_MONTH
194
	ORDER BY [YEAR] ASC
195
  END
196
END
197