[CSDL]T SQL Script Procedure Function (HD)
[CSDL]T SQL Script Procedure Function (HD)
use Northwind
go
--1
declare @ns datetime, @tuoi int
set dateformat dmy
set @ns = '29/01/2002'
set @tuoi = DATEDIFF(day,@ns,getdate())/365
print 'Tuoi cua ban la ' + convert(nvarchar(3),@tuoi)
--2
Select EmployeeID, count(OrderID) As SoLuong,
case
when count(OrderID) < 3 then N'Sốlượng đơn hàng quá ít!'
else 'Okey'
end Trangthai
From Orders
Where Year (OrderDate) = 1997
Group by EmployeeID
--3
declare @maHD int
set @maHD = 10248
select o.ProductID, p.ProductName
from [Order Details] o, Products p
where OrderID = @maHD and p.ProductID = o.ProductID
--4
Select * from Employees
declare @tenNV nvarchar(10)
set @tenNV = N'Thanh An'
if not exists (select FirstName from Employees where FirstName = @tenNV)
insert into Employees (FirstName, LastName)
values ('a',@tenNV)
Select @@ROWCOUNT
--5
select c.CustomerID, COUNT(distinct o.OrderID) as SLDH, SUM(Quantity) as SLSP
from Customers c, Orders o, [Order Details] d
where c.CustomerID = o.CustomerID and d.OrderID = o.OrderID
group by c.CustomerID
having COUNT(distinct o.OrderID) =1 and SUM(Quantity) > 5
--Câu 6
Declare @year nvarchar(50)
Set @year = 2002
Select soh.SalesPersonID, con.FirstName,con.LastName, SUM(soh.TotalDue) As
'TongDoanhThu'
From Sales.SalesOrderHeader soh, Person.Contact con
Where soh.SalesPersonID = con.ContactID
AND YEAR(soh.OrderDate) = @year
Group By soh.SalesPersonID, con.FirstName , con.LastName
Having SUM(soh.TotalDue) > (Select AVG(TotalDue)
From Sales.SalesOrderHeader
Where YEAR(OrderDate) = @year)
Order By soh.SalesPersonID ASC
Go
--cau7
declare @NgayDH datetime, @slnv int, @tongDH int, @TBDH float
set dateformat dmy
set @NgayDH ='5/7/1996'
EXEC spCau1
-- 2)Viết stored- procedure xuất danh sách khách hàng có đơn đặt hàng chưa giao
với sốlượng sản phẩ m mua > 1.
--Thủ tục có tham sốvào
go
CREATE PROC spCau2
AS
BEGIN
SELECT c.CompanyName
FROM Customers c, Orders o, [Order Details] d
WHERE o.ShippedDate is null and c.CustomerID = o.CustomerID and o.OrderID =
d.OrderID
group by c.CompanyName, o.OrderID
having sum(d.Quantity) > 10
end
exec spCau2
-- 3) Viế
t stored-procedure truyề
n vào mã sản phẩ
m, xuấ
t ra thông tin sản phẩm.
Go
CREATE PROC spCau3 @MaSP int
AS
BEGIN
SELECT *
FROM Products
WHERE ProductID = @MaSP
END
DECLARE @MaSanPham int
SET @MaSanPham=2
--Cau4
go
Create proc spCau4 @NgayBD datetime, @NgayKT datetime
As
begin
if @NgayBD is null
Set @NgayBD = DATEADD (dd,+(Day(GEtDate())-1), getDAte())
select *
from Products
where ProductID in
(select ProductID
from [Order Details]
where OrderID in (
select OrderID
from Orders
where OrderDate between @NgayBD and @NgayKT)
)
end
set dateformat dmy
declare @NgayBatDau datetime, @NgayKetThuc datetime
set @NgayBatDau = '25/6/1996'
set @NgayKetThuc = '28/8/1996'
--Cau 6
go
create proc spCau6 @TenSP nvarchar(40), @DG money, @Sl int, @TT bit, @KetQua int
output
as
begin
if exists (select ProductName from Products where ProductName = @TenSP)
set @KetQua = -2
else
begin
insert into Products(ProductName, UnitPrice, QuantityPerUnit,Discontinued)
values (@TenSP, @DG, @Sl, @TT)
if @@ROWCOUNT > 0
set @KetQua = 1
else
set @KetQua = -1
end
end
declare @Kq int
exec spCau6 'Cocacola1',10000,2,-1, @Kq output
print @Kq
go
create function fnKTKH (@MaKH nchar(5))
returns bit
as
begin
declare @kq bit
if exists (select CompanyName from Customers where CustomerID = @MaKH)
set @kq = 1
else
set @kq = 0
return @kq
end