Giáo trình đào tạo SQL Server cơ bản (Các câu lệnh SELECT, JOIN, các hàm, UNION, PIVOT TABLE)

18 6 0
Giáo trình đào tạo SQL Server cơ bản (Các câu lệnh SELECT, JOIN, các hàm, UNION, PIVOT TABLE)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình đào tạo SQL Server cơ bản (Các câu lệnh SELECT, JOIN, các hàm, UNION, PIVOT TABLE)Trong tài liệu này sẽ hướng dẫn thực hành các câu lệnh cơ bản đến nâng cao như:1. Các câu lệnh SELECT2. Các câu lệnh JOIN: LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER APPLY,...3. Các hàm thời gian, hàm với ký tự, cắt chuỗi,...4. Câu lệnh UNION ALL5. Câu lệnh PIVOT6. Các ví dụ khác

MỤC LỤC BUỔI 1: GIỚI THIỆU CHUNG Đối tượng áp dụng: Mục đích: 3 Thống cách thức làm việc: Giới thiệu phiên SQL Server: Lưu ý cài đặt SQL Server: Giới thiệu giao diện: Cách thức viết câu lệnh: Thiết kế CSDL với cấu trúc .5 BUỔI 2: CÁC HÀM TRONG SQL Câu lệnh EXECUTE(‘Chuỗi’) Hàm Toán học: Hàm chuỗi: Bài tập: BUỔI 3: HÀM NGÀY THÁNG .10 Hàm ngày tháng: .10 Bài tập 10 BUỔI 4: KẾT NỐI DỮ LIỆU 12 Câu lệnh truy vấn 12 Kết nối liệu bảng .12 Bài tập 13 BUỔI 5: CÁC HÀM TẬP HỢP VÀ GROUP BY VÀ ORDER BY 14 Hàm tập hợp: 14 Thứ tự xử lý câu lệnh: 14 Bài tập 15 BUỔI 6: LỆNH KẾT HỢP BẢNG VÀ BẢNG TẠM 16 Lênh Union .16 Bảng tạm: 16 Bài tập 16 BUỔI 7: CÁC HÀM CHUYỂN KIỂU VÀ KIỂM TRA 18 Hàm chuyển kiểu kiểm tra .18 Bài tập 18 BUỔI 8: KIỂM TRA TỒN TẠI VÀ HÀM DELETE, TRUNCATE, PIVOT 19 Kiểm tra tồn bảng field .19 Sự khác DELETE TRUNCATE: 19 PIVOT 19 Bài tập 20 BUỔI 9: HÀM RANKING .21 Hàm RANKING: .21 Lệnh vòng lặp 21 Bài tập 21 BUỔI 1: GIỚI THIỆU CHUNG Đối tượng áp dụng: - Những sinh viên năm cuối, trường tuyển chọn thực tập công ty - Đã đào tạo Cơ Sở Dữ Liệu SQL Server Mục đích: - Giúp Sinh viên nắm vững kiến thức - Tiếp cận toán thuật toán thực tế Thống cách thức làm việc: - Xin nghỉ phải xin phép (Điện thoại, Email) - Khi làm xong gửi đính theo file đặt tên theo quy tắc: Họ tên + Tên Trường ĐH - Khi giao bạn phải hoàn thành theo thời gian giao, tiếp cận kỹ đặt kế hoach hoàn thành kế hoạch - Trong trính chữa bài: Các bạn SV phải show máy chiếu trình bày cách thức giải toán giao để học kỹ thuyết trình - Đánh giá trình thực tập (thực vào buổi cuối cùng) - Đặt quy định thời gian học thời gian Nộp Nếu sai phạm có hình thức phạt tùy theo giáo viên lớp Giới thiệu phiên SQL Server: - Enterprise - Standard - Developer - Express Lưu ý cài đặt SQL Server: - Tìm hiểu yêu cầu phiên SQL dự định cài đặt - Đặt tên Named Instance: - Mục đích cài đặt: Nếu cài đặt với mơ hình lớn cần phải tìm hiểu thêm (AlwaysOn, Link server, ….) Giới thiệu giao diện: - Các Database Hệ thống:  Master: chứa thông tin hệ thống SQL Server: Các tài khoản đăng nhập, cấu hình hệ thống, thơng tin sở liệu tạo, thủ tục hệ thống, thủ tục người dùng định nghĩa…Ta phải quản trị Database cẩn thận, sửa đổi hệ thống cần Backup database Master  Tempdb database chứa đối tượng tạm thời Global Local Temporary Table Tempdb tự động khởi tạo lại SQL Server khởi động lại  Msdb: Chứa thông tin backup Database, thông tin SQL Agent, SQL Server Jobs, cảnh báo lỗi vài thông tin replication Log Shipping  Model database: Database template ta tạo Database Khi ta tạo sở liệu SQL Server lấy tất mẫu (bao gồm Tables, Views,…) từ model database - Security: Thông tin user đăng nhập SQL, Các Roles, Chứng - Server Objects: - Replication: Tính nâng cao SQL để đồng liệu (Tìm hiểu ngồi) - Always On High Avilability: Tính nâng cao SQL hỗ trợ chạy SQL 24/7 giảm thiểu rủi ro (Tìm hiểu ngồi) - Management Ý nghĩa Object Database:  Tables  Views  Procedured  Functions  Trigger  Cách thức viết câu lệnh: - Nguyên tắc người viết code: “Tinh tế câu lệnh”, luôn phải hiểu “Viết đoạn code người khác đọc hiểu được” đó: -  Trình bày khn hình ngang máy tính  Sử dụng tab lùi dịng vào phía  Trình bày phải có dấu cách sau dấu “,”  Trình bày theo khối lệnh, gọn gàng, cách dòng khối lệnh cho dễ quan sát  Các từ khóa viết hoa: SELECT …FROM Lưu ý đến Performance đoạn lệnh:  Kiểm tra mục tất field mệnh đề WHERE JOIN câu lệnh SQL  Giới hạn kích thước của bảng liệu làm việc: Kiểm tra bảng sử dụng câu SELECT để áp dụng lọc qua WHERE  Chỉ chọn field mà báo cáo cần tránh thừa thơng tin  Giới hạn kích thước của bảng liệu làm việc: Kiểm tra bảng sử dụng câu SELECT để áp dụng lọc qua WHERE -  Loại bỏ phần tính tốn mệnh đề WHERE JOIN  Đặt Index với Field hay truy vấn Đầu mã thủ tục, hàm phải có thơng tin chung:  Người tạo  Ngày khởi tạo  Mô tả chung - Mỗi lần đoạn mã sửa đổi phải ghi (Comment) rõ ràng:  Người sửa đổi  Ngày sửa đổi  Nội dung chỉnh sửa - Các đoạn lệnh có thuật tốn phức tạp cần có ghi rõ ràng: - Các câu ghi cần rõ ràng, ngắn gọn, đủ nghĩa, khơng dài dịng Thiết kế CSDL với cấu trúc - Lưu ý tên trường tên bảng đặt để dễ chấm - Tạo database có tên: SvThucTap cách viết lệnh SQL - Tạo bảng sau cách viết lệnh SQL Customer: Danh mục đối tượng Id Int Khóa chính, tự tăng Code Varchar(24) Duy Name Nvarchar(128) Type Int 0: Khách lẻ; 1: Đối tượng; 2: Công ty IsActive Int 0: Đình chỉ; 1: Hoạt động StartDate Date Cho phép NULL EndDate Date Cho phép NULL Warehouse: Danh mục kho Id Int Khóa chính, tự tăng Code Varchar(24) Duy Name Nvarchar(128) IsActive Int Item: Danh mục vật tư 0: Đình chỉ; 1: Hoạt động Id Int Khóa chính, tự tăng Code Varchar(24) Duy Name Nvarchar(128) Unit Nvarchar(24) Type Int 0:dịch vụ; 1: vật tư; 2:sản phẩm IsActive Int 0: Đình chỉ; 1: Hoạt động OpenWarehouse: Tồn kho đầu kỳ Id Int WarehouseCode Varchar(24) ItemCode Varchar(24) Quantity Numeric(18, 5) Amount Numeric(18, 2) IsActive Int Khóa chính, tự tăng 0: Đình chỉ; 1: Hoạt động Doc: Chứng từ / đầu phiếu Id Int Khóa chính, tự tăng DocId Varchar(16) Duy nhất, dùng để liên kết với bàng DocDetail DocDate Date DocNo Nvarchar(24) Type Int 1: Nhập; 2: Xuất CustomerCode Varchar(24) WarehouseCode Varchar(24) Description Nvarchar(128) IsActive Int 0: Đình chỉ; 1: Hoạt động DocDetail: Chứng từ / chi tiết phiếu - Id Int Khóa chính, tự tăng DocId Varchar(16) Dùng để liên kết với bàng Doc RowId Varchar(16) Duy ItemCode Varchar(24) Quantity Numeric(18, 5) UnitCost Numeric(18, 5) Amount Numeric(18, 2) IsActive Int 0: Đình chỉ; 1: Hoạt động Bài làm lưu theo cấu trúc sau: [MaLop]_[BuoiXX]_[HoTen] VD: 1912HVNH_Buoi01_BinhLT, 1912HVNH_Buoi03_DuyenPTT Trường hợp buổi dạy nhiều ngày, thêm đuôi A, B vào sau buổi sau 1912HVNH_Buoi03A_DuyenPTT, 1912HVNH_Buoi03B_DuyenPTT BUỔI 2: CÁC HÀM TRONG SQL Câu lệnh EXECUTE(‘Chuỗi’) - Cấu trúc: EXEC(‘SELECT * FROM DMVT’) - Nguyên tắc biến câu lệnh Query SQL thành chuỗi câu lệnh Execute():  Thêm dấu nháy đơn vào đằng trước đằng sau câu lệnh  Với dấu nháy đơn câu lệnh Query SQL thông thường vào chuỗi để sử dụng Câu lệnh EXECUTE thêm dấu nháy Ví dụ: SELECT * FROM DMVT WHERE Ma_Vt = ‘A01’  EXEC(‘SELECT * FROM DMVT WHERE Ma_Vt = ‘’A01’’’)  Trường hợp muốn cộng ký tự đặc biệt vào chuỗi dung hàm CHAR(Mã KeyAscii) Ví dụ CHAR(13)  Ký tự Enter, CHAR(39) ký tự nháy đơn https://docs.microsoft.com/en-us/sql/t-sql/functions/ascii-transact-sql?view=sql-server-ver15 - Tìm hiểu thêm EXECUTE sp_executesql Buoi01_Execute.sql Hàm Toán học: Hàm Diễn Giải POWER(X,Y) Giá trị X lũy thừa Y ROUND(X,n) Số X làm tròn, n chữ số tính từ dấu thập phân SQUARE(X) Bình phương giá trị X SQRT(X) Căn bậc giá trị X ABS (X) Lấy giá trị tuyệt đối X FLOOR (X) Làm tròn xuống phần nguyên giá trị X CEILING (X) Làm tròn lên phần nguyên giá trị X A%B Lấy số dư phép chia A/B SIGN(X) 1- Số dương, 0- Số 0; -1 Số âm RAND() Trả số ngẫu nhiên Hàm chuỗi: Hàm Diễn Giải "Chuỗi 1" + "Chuỗi 2" Nối chuỗi toán tử cộng SPACE(n) Trả chuỗi có n khoảng trắng LOWER(Chuỗi kỹ tự) Chuyển chuỗi thành chữ thường UPPER(Chuỗi ký tự) Chuyển thành chữ hoa LTRIM(Chuỗi ký tự) Trả liệu khơng có khoảng trắng bên trái RTRIM(Chuỗi ký tự) Trả liệu khơng có khoảng trắng bên phải LEFT(Chuỗi ký tự, n) Trả chuỗi n ký tự tính từ bên trái RIGHT(Chuỗi ký tự, n) Trả chuỗi n ký tự tính từ bên phải SUBSTRING(Chuỗi ký tự, n1, n2) Trả chuỗi vị trí n1 lấy n2 ký tự REPLACE(Chuỗi 1, Chuỗi 2, Chuỗi 3) Thay chuỗi chuỗi chuỗi CHARINDEX (Chuỗi 1, Chuỗi [,Từ vị trí] Trả vị trí tìm thấy Chuỗi Chuỗi [Tính từ vị trí] STUFF(Chuỗi 1, vị trí, chiều Chèn Chuỗi vào Chuỗi từ "vị trí" xóa bỏ số ký tự dài, Chuỗi 2) "chiều dài" Chuỗi Trả giá trị độ dài chuỗi 1, khơng bao gồm dấu cách phía bên LEN("Chuỗi 1") phải BUỔI 3: HÀM NGÀY THÁNG Hàm ngày tháng: Hàm Diễn Giải GETDATE() Trả ngày hành CURRENT_TIMESTAMP Trả ngày hành DATEADD(Datepart, n, Ngày) Thêm n (tăng/giảm) Datepart vào Ngày DATEDIFF(DatePart, Ngày 1, Ngày 2) Trả số DatePart Ngày Ngày DATEPART(DatePart, Ngày) Trả giá trị DatePart Ngày DATENAME(DatePart, Ngày) Trả giá trị DatePart Ngày kiểu chuỗi DAY(Ngày 1) Trả giá trị ngày Ngày MONTH(Ngày 1) Trả giá trị tháng Ngày YEAR(Ngày 1) Trả giá trị năm Ngày Trong đó, giá trị DatePart liệt kê sau: DatePar t Giá trị Diễn Giải DD 1-31 Ngày tháng MM 1-12 Tháng năm QQ 1-4 Quý năm DW 1-7(Sun-Sat) Thứ tuần YY 1753 - 9999 Năm BUỔI 4: KẾT NỐI DỮ LIỆU Câu lệnh truy vấn SELECT: Những trường không có hàm kèm phải có mệnh đề GROUP BY FROM: Lấy liệu từ bảng WHERE: Mệnh đề đề điều kiện để lọc liệu GROUP BY: Sau xử lý WHERE (Sẽ có buổi chi tiết phần này) HAVING: Điều kiện sau GROUP BY (Sẽ có buổi chi tiết phần này) ORDER BY: Sắp xếp kết sau xử lý mệnh đề (Sẽ có buổi chi tiết phần này) Biểu thức điều kiện kèm WHERE Hàm Kết BETWEEN Giá trị AND Giá trị AND, OR Kết hợp điều kiện loại trừ điều kiện % Đại diện cho nhiều ký tự đằng trước sau Ký tự ‘_’ đại LIKE kết hợp với ‘%’ ‘ _’ diện ký tự IS NULL Không dung giá trị kiểm tra = NULL mà phải dùng IS NULL Không dung giá trị kiểm tra NULL mà phải dùng IS NOT IS NOT NULL NULL Kết nối liệu bảng Nôi dung Ghi INNER JOIN: Lấy thông tin chung bảng A bảng B LEFT JOIN: Lấy tồn thơng tin bên trái liệu bên phải có bên trái RIGHT JOIN: Lấy tồn thông tin bên phải liệu bên trái có bên phải FULL JOIN: Lấy tồn thơng tin bên (đầy đủ trường bảng) Kết nối kiểu FROM Table1, Table2: Giống INNER JOIN CROSS APPLY OUTER APPLY: Giống INNER JOIN LEFT Cẩn thận, dùng liên kết với hàm CASE WHEN … THEN … ELSE … END CASE … WHEN … THEN ELSE END Ví dụ minh họa Buoi04_JOIN.sql BUỔI 5: CÁC HÀM TẬP HỢP VÀ GROUP BY VÀ ORDER BY Hàm tập hợp: Hàm Kết COUNT(*) Trả số dòng chọn MAX(Tên cột) Trả giá trị lớn Cột MIN(Tên cột) Trả giá trị nhỏ Cột AVG(Tên cột) Trả trung bình cộng giá trị Cột SUM(Tên cột) Trả tổng giá trị cột SELECT DISTINCT Trả tập hợp giá trị Thứ tự xử lý câu lệnh: SELECT: Những trường khơng có hàm kèm phải có mệnh đề GROUP BY FROM: Lấy liệu từ bảng WHERE: Mệnh đề đề điều kiện để lọc liệu GROUP BY: Sau xử lý WHERE HAVING: Điều kiện sau GROUP BY ORDER BY: Sắp xếp kết sau xử lý mệnh đề Mệnh đề: ROLLUP (dùng với mệnh đề GROUP BY): Chèn dòng tổng cho dòng chi tiết trường dòng tổng cộng SELECT Ma1, Ma2, SUM(SL) FROM Table WHERE Ma1 LIKE 'A%' GROUP BY Ma1, Ma2 WITH ROLLUP Mệnh đề: CUBE (dùng với mệnh để GROUP BY): Kết trả giống ROLLUP thêm tồn dịng tổng cộng trường Mệnh đề xếp: ORDER BY (ASC: Tăng dần (mặc định), DESC: Giảm dần) Mệnh đề: SELECT TOP n, SELECT TOP WITH TIES BUỔI 6: LỆNH KẾT HỢP BẢNG VÀ BẢNG TẠM Lênh Union Nội dung Ghi UNION: Tập hợp loại trừ liệu bảng giống Câu lệnh chậm UNION ALL: Lấy toàn liệu bảng (Sẽ lấy độ rộng lớn trường bảng kết nối) Bảng tạm: - Là bảng có tên có ký tự # đầu ví dụ: #BangKeChungTu, #SochitietTK… - Bảng tạm có loại: Bảng tạm # bảng tạm # (##)  Bảng tạm có ký tự # đầu bảng tạo chạy câu lệnh CREATE TABLE SESSION  Bảng tạm có ký tự # bảng tạm tạo chạy câu lệnh CREATE TABLE bị DROP TABLE  Cách viết câu lệnh bảng tạm giống với bảng thường nhiên trước tạo bảng cần viết câu lệnh kiểm tra tồn bảng để có xóa đi: IF OBJECT_ID(‘tempdb #TenBangTam’) IS NOT NULL DROP TABLE #TenBangTam - Ứng dụng bảng tạm dùng nhiều thực tế giúp việc xử lý trung gian liệu thuận lợi - Câu lệnh: INSERT INTO Tên bảng (Ds trường) SELECT INSERT INTO Tên bảng (Ds trường) … VALUES(….) Buoi06_Union.sql Buoi06_BangTam.sq l BUỔI 7: CÁC HÀM CHUYỂN KIỂU VÀ KIỂM TRA Hàm chuyển kiểu kiểm tra Hàm Kết CAST ( AS ) Chuyển đổi liệu Ứng dụng hàm để chuyển đổi kiểu tạo cột câu lệnh SELECT CAST (‘’ AS NVARHAR(16)) AS TenCot Chuyển đổi liệu theo định dạng (hay sử dụng cho liệu kiểu CONVERT(, [, CONVERT(VARCHAR(10),GETDATE(),110) ]) Ứng dụng hàm để chuyển đổi kiểu tạo cột câu lệnh SELECT CAST (‘’ AS NVARHAR(16)) AS TenCot STR(, [,]): Chuyển liệu số sang kiểu chuỗi Định dạng giá trị số ngày SELECT FORMAT(123456789, '##-##-#####'); DECLARE @d FORMAT(value, format, SELECT FORMAT English culture) DATETIME = '12/01/2018'; (@d, 'd', 'en-US') AS 'US Result', FORMAT (@d, 'd', 'no') AS 'Norwegian Result', FORMAT (@d, 'd', 'zu') AS 'Zulu Result'; DATEFROMPARTS( ye Thông qua giá trị năm, tháng, ngày, trả kiểu ngày ar, month, day ) SELECT DATEFROMPARTS(2020, 5, 6) ISNULL() Kiểm tra giá trị null hay khơng trả giá trị mặc định BUỔI 8: KIỂM TRA TỒN TẠI VÀ HÀM DELETE, TRUNCATE, PIVOT Kiểm tra tồn bảng field IF EXISTS(SELECT ) - IF EXISTS(SELECT * FROM Table WHERE…): Nên sử dụng - IF EXISTS(SELECT TOP FROM Table WHERE….): Không hiệu - IF EXISTS(SELECT Count(*) FROM Table WHERE…) > 0: Không hiệu Sự khác DELETE TRUNCATE: - DELETE: Bản chất ghi chưa bị xóa khỏi CSDL (nó bị đè nhớ hết) Ta kiểm tra sau DELETE nhớ khơng thay đổi Vì lý nên chương trình Index, ràng buộc lại (nếu có) -  Sử dụng DELETE sử dụng WHERE để xóa phần liệu -> Chậm  Nếu bảng có chứa kiểu liệu IDENTITY thêm ghi liệu được+1 TRUNCATE: Bản chất xóa liệu hồn tồn khỏi CSDL mà không quan tâm ràng buộc, Index… -> Tốc độ nhanh  Sử dụng TRUNCATE: Xóa tồn bảng (không sử dụng mệnh đề WHERE)  Nếu bảng có chứa kiểu liệu IDENTITY thêm ghi liệu đánh lại từ số: PIVOT, UNPIVOT PIVOT cho phép phân tích bảng chéo (cross tabulation) chuyển liệu từ bảng sang bảng khác, tức lấy kết tổng hợp chuyển từ dòng thành cột SELECT cot_dautien AS , [giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n] FROM () AS PIVOT ( ham_tong () FOR IN ([giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n]) ) AS ; UNPIVOT: Ngược lại so với PIVOT, tự tìm hiểu IF OBJECT_ID('Tempdb #Tmp') IS SELECT AS ProductId, 'CUS001' INTO #Tmp UNION ALL SELECT AS ProductId, 'CUS004' UNION ALL SELECT AS ProductId, 'CUS003' UNION ALL SELECT AS ProductId, 'CUS001' UNION ALL SELECT AS ProductId, 'CUS002' UNION ALL SELECT AS ProductId, 'CUS003' UNION ALL NOT NULL DROP TABLE #Tmp AS CustomerCode, AS Quantity, 100000 AS Amount AS CustomerCode, AS Quantity, 200000 AS Amount AS CustomerCode, AS Quantity, 1000000 AS Amount AS CustomerCode, AS Quantity, 500000 AS Amount AS CustomerCode, AS Quantity, 100000 AS Amount AS CustomerCode, AS Quantity, 300000 AS Amount SELECT AS ProductId, 'CUS003' AS CustomerCode, AS Quantity, 400000 AS Amount SELECT * FROM #Tmp ORDER BY ProductId, CustomerCode SELECT ProductId, pvt.CUS001 AS Col1, pvt.CUS002 AS Col2, pvt.CUS003 AS Col3, pvt.CUS004 AS Col4 FROM (SELECT ProductId, CustomerCode, Amount FROM #Tmp) AS t1 PIVOT ( SUM (AMOUNT) FOR CustomerCode IN (CUS001, CUS002, CUS003, CUS004) ) AS pvt ORDER BY ProductId DROP TABLE #Tmp BUỔI 9: HÀM RANKING Hàm RANKING: - ROW_NUMBER ( ) OVER ( [ ] ): Thường sử dụng đánh số xếp theo điều kiện (có thể có phân nhóm đánh số lại từ 1)  ORDER BY: xếp theo  PARTITION BY: nhóm theo điều kiện VD: Muốn đánh số tự động Table theo nhóm phận có số lượng giảm dần Row_Number() OVER(PARTITION BY Ma_Bp ORDER BY So_Luong DESC) As Sap_Xep - RANK ( ) OVER ( [] ): Thường sử dụng đánh số giống giá trị giống giá trị khác theo tổng số ghi VD: Có ghi; giá trị vị trí thứ giống cách đánh số có kiểu (1 -> -> ->4 ->5) -  ORDER BY: xếp theo  PARTITION BY: nhóm theo điều kiện DENSE_RANK() OVER ( [] ): Thường sử dụng đánh số giống giá trị giống giá trị khác theo đánh số VD: Có ghi; giá trị vị trí thứ giống cách đánh số có kiểu (1 -> -> ->3 ->4) -  ORDER BY: xếp theo  PARTITION BY: nhóm theo điều kiện NTILE(n) OVER ( [] ): chia thành n nhóm đánh dấu từ 1-> n Có thể áp dụng cho việc lấy ghi có giá trị khoảng trung bình VD: SELECT Ma_Dt FROM (SELECT Ma_Dt, So_Luong, NTILE(3) OVER (ORDER BY So_luong) AS SL_TB FROM ) WHERE SL_TB =  ORDER BY: xếp theo  PARTITION BY: nhóm theo điều kiện SELECT * ,ROW_NUMBER() OVER(ORDER BY NgayCt) AS ROW_NUMBER ,ROW_NUMBER() OVER(PARTITION BY MaDt ORDER BY NgayCt) AS ROW_NUMBER_Partition ,RANK() OVER(ORDER BY MaDt) RANK ,DENSE_RANK() OVER(ORDER BY MaDt) AS DENSE_RANK ,NTILE(4) OVER(ORDER BY MaDt) AS NTILE FROM Ct Lệnh vòng lặp - WHILE BEGIN END: Kiểm tra vòng lặp thỏa mãn điều kiện thực Nên dùng - CURSOR: Kiểm tra ghi kiêu trỏ Dùng cẩn thận tốn nhớ - GOTO: Di chuyển trỏ Hạn chế dùng thay đổi trình tự từ xuống LOOP.sql

Ngày đăng: 19/06/2023, 13:13

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan