-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPREC_SET_BENMUA_BGT.sql
More file actions
106 lines (86 loc) · 3.01 KB
/
PREC_SET_BENMUA_BGT.sql
File metadata and controls
106 lines (86 loc) · 3.01 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- INSERT INTO dbo.LENHDAT (MACP, LOAIGD, LOAILENH, SOLUONG, GIADAT, TRANGTHAILENH)
-- VALUES ('FLC', 'M', 'LO', 100, 13000, 'DANG CHO');
-- SELECT TOP 3 GIADAT, SUM(SOLUONG) AS SOLUONG
-- FROM LENHDAT
-- WHERE MACP = @macp AND LOAIGD = 'M' AND SOLUONG > 0
-- GROUP BY GIADAT ORDER BY GIADAT DESC
-- SELECT TOP 3 GIADAT, SUM(SOLUONG) AS SOLUONG
-- FROM LENHDAT
-- WHERE MACP = @macp AND LOAIGD = 'B' AND SOLUONG > 0
-- GROUP BY GIADAT ORDER BY GIADAT ASC
CREATE PROCEDURE [dbo].[PREC_SET_BENMUA_BGT]
(@macp varchar(20))
AS
BEGIN
-- DECLARE @macp VARCHAR(20) = 'ACB'
DECLARE @soluong int;
DECLARE @giadat float;
DECLARE @loopnumber int = 1;
DECLARE cursorUPDATE_CP CURSOR FOR -- khai báo con trỏ cursorUPDATE_CP
SELECT TOP 3 GIADAT, SUM(SOLUONG) AS SOLUONG
FROM LENHDAT
WHERE MACP = @macp AND LOAIGD = 'M' AND SOLUONG > 0
GROUP BY GIADAT ORDER BY GIADAT DESC
OPEN cursorUPDATE_CP
--------
FETCH NEXT FROM cursorUPDATE_CP -- Đọc dòng đầu tiên
INTO @giadat, @soluong
WHILE @@FETCH_STATUS = 0 --vòng lặp WHILE khi đọc Cursor thành công
BEGIN
PRINT 'giadat: ' + convert(varchar(10), @giadat) + ' / soluong: ' + convert(varchar(10), @soluong)
IF @loopnumber = 1
BEGIN
IF EXISTS (SELECT MACP FROM dbo.BANGTRUCTUYEN WHERE MACP = @macp)
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua1 = @giadat, KLMua1 = @soluong
WHERE MACP = @macp;
END
ELSE
BEGIN
INSERT INTO dbo.BANGTRUCTUYEN (MACP, GiaMua1, KLMua1, TongKL)
VALUES (@macp, @giadat, @soluong, 0);
END
END
IF @loopnumber = 2
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua2 = @giadat, KLMua2 = @soluong
WHERE MACP = @macp;
END
IF @loopnumber = 3
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua3 = @giadat, KLMua3 = @soluong
WHERE MACP = @macp;
END
SET @loopnumber = @loopnumber + 1;
FETCH NEXT FROM cursorUPDATE_CP -- Đọc dòng đầu tiên
INTO @giadat, @soluong
END
CLOSE cursorUPDATE_CP -- Đóng Cursor
DEALLOCATE cursorUPDATE_CP
IF @loopnumber = 1
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua1 = NULL, KLMua1 = NULL, GiaMua2 = NULL, KLMua2 = NULL, GiaMua3 = NULL, KLMua3 = NULL
WHERE MACP = @macp;
END
IF @loopnumber = 2
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua2 = NULL, KLMua2 = NULL, GiaMua3 = NULL, KLMua3 = NULL
WHERE MACP = @macp;
END
IF @loopnumber = 3
BEGIN
UPDATE dbo.BANGTRUCTUYEN
SET GiaMua3 = NULL, KLMua3 = NULL
WHERE MACP = @macp;
END
END
GO