Create Table KH_BAC (Makh int, TenKh Nchar(30), Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc=Bac bo), PRIMARY KEY (Makh, Khuvuc) )Create Table KH_TRUNG (Makh int, TenKh Nchar(30), Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc=Trung bo), PRIMARY KEY (Makh, Khuvuc) )Create Table KH_NAM(Makh int, TenKh Nchar(30),Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc=Nam bo),PRIMARY KEY (Makh, Khuvuc)) create view danhsachasselect from dbo.KH_BACunion allselect from dbo.KH_TRUNGunion allselect from dbo.KH_NAMinsert into danhsachvalues (123,Nguyen Van A,Bac bo)insert into danhsachvalues (134,Sky,Bac bo)insert into danhsachvalues (345,Tran B,Bac bo)insert into danhsachvalues (111,Nguyen A,Trung bo)insert into danhsachvalues (245,Dao Anh,Trung bo)insert into danhsachvalues (342,Vo Van Kiet,Trung bo)insert into danhsachvalues (435,Nguyen Dao E,Nam bo)insert into danhsachvalues (349,Tran Hai,Nam bo)insert into danhsachvalues (342,Nguyen Duc,Nam bo) select from dbo.danhsach
Trang 1bai 11 module 4
Create Table KH_BAC
(Makh int, TenKh Nchar(30),
Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Bac bo'), PRIMARY KEY (Makh, Khuvuc)
)
Create Table KH_TRUNG
(Makh int, TenKh Nchar(30),
Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Trung bo'), PRIMARY KEY (Makh, Khuvuc)
)
Create Table KH_NAM
(Makh int, TenKh Nchar(30),
Khuvuc Nvarchar(30) NOT NULL CHECK ( Khuvuc='Nam bo'), PRIMARY KEY (Makh, Khuvuc)
)
create view danhsach
as
select *from dbo.KH_BAC
union all
select *from dbo.KH_TRUNG
union all
select *from dbo.KH_NAM
insert into danhsach
values (123,'Nguyen Van A','Bac bo')
insert into danhsach
values (134,'Sky','Bac bo')
insert into danhsach
values (345,'Tran B','Bac bo')
insert into danhsach
values (111,'Nguyen A','Trung bo')
insert into danhsach
values (245,'Dao Anh','Trung bo')
insert into danhsach
values (342,'Vo Van Kiet','Trung bo')
insert into danhsach
values (435,'Nguyen Dao E','Nam bo')
insert into danhsach
values (349,'Tran Hai','Nam bo')
insert into danhsach
values (342,'Nguyen Duc','Nam bo')
select *
from dbo.danhsach
I batch
bai1
declare @tongsoHD int
select @tongsoHD=
count([SalesOrderID])
from [Sales].[SalesOrderDetail]
where [ProductID] =778
Trang 2if @tongsoHD>500
print 'San Pham' +'778'+'co'+convert(char(5), @tongsoHD)+'tren 500 don hang'
else print 'san pham '+ convert(char(5), @tongsoHD)+'co it don dat hang' go
bai2
declare @makh int,@n int,@nam int
set @makh=11527
set @nam=2008
select @n=count([SalesOrderID])
from [Sales].[SalesOrderHeader]
where [CustomerID]=@makh
and year([OrderDate])=@nam
if(@n<>0)
print 'khach hang '+convert(char(10),@makh)+'co '+convert(char(5),@n) +'hoa don trong nam 2008'
else
print'Khach hang khong co hoa don nao vao nam 2008'
go
bai3
use AdventureWorks2008;
go
select [SalesOrderID],sum([LineTotal]) as subtotal,
discount = case
when sum([LineTotal])<10000 then 0
when sum([LineTotal])<12000 then 0.05*sum([LineTotal])
when sum([LineTotal])<15000 then 0.1*sum([LineTotal])
else
0.15*sum([LineTotal])
end
from [Sales].[SalesOrderDetail]
group by [SalesOrderID]
go
bai4
declare @mancc int,@masp int,@soluongcc int
set @mancc=1650
set @masp=4
select @soluongcc=COUNT(OnOrderQty)
from Purchasing.ProductVendor
if(@soluongcc is null)
print 'Nha cung cap 1650 khong cung cap san pham 4'
else
print'Nha cung cap 1650 cung cap san pham 4 voi so luong
'+convert(char(5),@soluongcc)
go
bai5
while(select SUM(rate) from
HumanResources.EmployeePayHistory)<6000
begin
update HumanResources.EmployeePayHistory
set Rate=Rate*1.1
if(select MAX(rate)from
HumanResources.EmployeePayHistory)>150
break
Trang 3continue
end
II function
bai1
create function countofEmployees
(@mapb int)
returns int
as
begin
return
(select COUNT(DepartmentID)
from HumanResources.EmployeeDepartmentHistory
where DepartmentID=@mapb)
end
declare @mapb int
set @mapb=12
select DepartmentID,Name, countOfEmp=dbo.countofEmployees(DepartmentID) from HumanResources.Department
bai2
create function InventoryProd
(@ProductID int,@locationID smallint)
returns int
as
begin
return
(select COUNT(Quantity)
from Production.ProductInventory
where ProductID=@ProductID and LocationID=@locationID)
end
bai 3
create function UbTotalOfEmp
(@EmplID int,@MonthOrder datetime, @YearOrder datetime)
returns int
as
begin
return
(select COUNT(SubTotal)
from Sales.SalesOrderHeader
where SalesOrderID=@EmplID and YEAR(OrderDate)=@YearOrder and
MONTH(OrderDate)=@MonthOrder)
end
III Table Valued Functions
Bai1
create function sumofOrder(@thang datetime,@nam datetime)
returns table
as
return
(select [SalesOrderID],[OrderDate],[SubTotal]
from [Sales].[SalesOrderHeader]
where month([OrderDate])=@thang and year(Orderdate)=@nam
group by [SalesOrderID],[OrderDate],[SubTotal]
having [SubTotal]>70000
Trang 4Bai2
create function NewBonus()
returns table
as
return
(SELECT Sales.SalesOrderHeader.SalesPersonID,
(Sales.SalesPerson.Bonus+SUM(Sales.SalesOrderHeader.SubTotal)*0.01 )as Newbonus, SUM(Sales.SalesOrderHeader.SubTotal) as SumofSubTotal
FROM Sales.SalesOrderHeader INNER JOIN Sales.SalesPerson
ON Sales.SalesOrderHeader.SalesPersonID =
Sales.SalesPerson.BusinessEntityID
group by Sales.SalesOrderHeader.SalesPersonID,Sales.SalesPerson.Bonus )
Bai3
create function SumofProduct(@MaNCC int)
returns table
as
return
(SELECT Purchasing.ProductVendor.ProductID,
SUM(Purchasing.PurchaseOrderDetail.OrderQty)as SumofProduct,
SUM(Purchasing.PurchaseOrderHeader.SubTotal)as SumOfSubtotal
FROM Purchasing.PurchaseOrderDetail INNER JOIN
Purchasing.PurchaseOrderHeader
ON Purchasing.PurchaseOrderDetail.PurchaseOrderID =
Purchasing.PurchaseOrderHeader.PurchaseOrderID INNER JOIN
Purchasing.ProductVendor
ON Purchasing.PurchaseOrderDetail.ProductID =
Purchasing.ProductVendor.ProductID
where BusinessEntityID=@MaNCC
GROUP by Purchasing.ProductVendor.ProductID
)
Bai4
create function Discount_func()
returns table
as
return
(
select SalesOrderID,SubTotal,
Discount=case
when SubTotal<10 then 0
when SubTotal>=1000 and SubTotal<5000 then SubTotal*0.05
when SubTotal>=5000 and SubTotal<10000 then SubTotal*0.1
else SubTotal*0.15
end
from Sales.SalesOrderHeader
group by SalesOrderID,SubTotal
)
Bai5