1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Truy vấn nâng cao

10 4 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 352,5 KB

Nội dung

Bài giảng Truy vấn nâng cao được biên soạn nhằm tìm hiểu bảng tạm, truy vấn đệ quy, truy vấn chéo, truy vấn. Mời các bạn cùng tham khảo bài giảng để nắm chi tiết hơn nội dung nghiên cứu.

TRUY VẤN NÂNG CAO Bảng tạm with tscv as ( select manv, count(*) ts from phancong group by manv ) select manv, tennv, (select ts from tscv where manv=nv.manv) / (select sum(ts) from tscv) AS xxx from nhanvien nv -select manv, count(*)/(select sum(ts) from tscv) Truy vấn đệ quy create table quanhe_nhanvien (manv char(5) primary key,tennv char(20), manvct char(5)) - manv tennv manvct Nv001 A null Nv002 B null Nv003 C Nv001 Nv004 D Nv001 Nv005 E Nv003 Truy vấn đệ quy with truy (manv,tennv,manvct,mucdo,cay,cayten) as ( select a.manv,a.tennv,a.manvct,1 as mucdo, cast('' as varchar(max)) as cay, cast('' as varchar(max)) as cayten from quanhe_nhanvien a Truy vấn đệ quy with truy (manv,tennv,manvct,kq) as ( select a.manv,a.tennv,a.manvct, cast('' as varchar(max)) as kq from quanhe_nhanvien a where a.manvct is null union all select b.manv,b.tennv,b.manvct, (truy.kq + '\' + b.manvct) as kq from quanhe_nhanvien b inner join truy on truy.manv = b.manvct Truy vấn đệ quy (kết quả) Manv Tennv Manvct Mucdo cay cayten Nv001 A null Nv002 B Null Nv003 C Nv001 \Nv001 \A Nv004 D Nv001 \Nv001 \A Nv005 E Nv003 \Nv001\Nv003 \A\C Nv006 F Nv005 \Nv001\Nv003\Nv005 \A\C\E Truy vấn đệ quy with truy (manv,tennv,manvct,mucdo,cay,cayten) as ( select a.manv,a.tennv,a.manvct,1 as mucdo, cast('' as varchar(max)) as cay, cast('' as varchar(max)) as cayten from quanhe_nhanvien a Truy vấn chéo  (Pivot) create table baocaods (nam int, mahang char(5), sl int, daily char(5), constraint kc_baocaods primary key (nam,mahang,daily)) (1998,'G1',3,'D1') (1999,'G1',4,'D1') (1997,'G1',2,'D1') (1998,'G2',9,'D1') (1999,'G2',4,'D1') (1997,'G2',6,'D1') (1998,'G1',32,'D2') Truy vấn chéo (Pivot) select mahang,[1997],[1998],[1999] from (select mahang,sl,nam from baocaods) as a pivot (sum(sl) for nam in [1997],[1998],[1999])) as b [1997],[1998],[1999] : là các giá trị mahang,sl,nam : gồm đúng 3 cột gồm Header Row,Header column,  Value Mệnh đề From và Pivot phải đặt lại tên mới Truy vấn  (Cross – outer apply) select * From nhanvien as nv cross apply ( select count(*) as ts from phancong as pc where pc.manv = nv.manv ) as tongsoviec Làm lại truy vấn count cho từng manv  (có thể thay câu count thành hàm tính tốn cho ra Table) Select * from nhanvien as nv inner join (select manv,count(*) ts from phancong ... null union all select b.manv,b.tennv,b.manvct, (truy. kq + '' + b.manvct) as kq from quanhe_nhanvien b inner join truy on truy. manv = b.manvct Truy? ?vấn? ?đệ quy (kết quả) Manv Tennv Manvct Mucdo cay... varchar(max)) as cayten from quanhe_nhanvien a Truy? ?vấn? ?chéo  (Pivot) create table baocaods (nam int, mahang char(5), sl int, daily char(5), constraint kc_baocaods primary key (nam,mahang,daily)) ... Truy? ?vấn? ? (Cross – outer apply) select * From nhanvien as nv cross apply ( select count(*) as ts from phancong as pc where pc.manv = nv.manv ) as tongsoviec Làm lại? ?truy? ?vấn? ?count cho từng manv 

Ngày đăng: 08/06/2021, 11:45