-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScript_DemoDatabase.sql
More file actions
134 lines (112 loc) · 3.08 KB
/
Script_DemoDatabase.sql
File metadata and controls
134 lines (112 loc) · 3.08 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
USE master
go
IF EXISTS ( SELECT name
FROM sys.databases
WHERE name = 'DropObjects' )
BEGIN
DROP DATABASE DropObjects
END
CREATE DATABASE DropObjects
GO
USE DropObjects
GO
CREATE TABLE tblAddress
(
AddressID INT IDENTITY
PRIMARY KEY ,
AddressLine VARCHAR(250) ,
City VARCHAR(50)
)
GO
CREATE TABLE tblCustomer
(
CustomerID INT IDENTITY
PRIMARY KEY ,
FirstName VARCHAR(50) ,
LastName VARCHAR(50) ,
AddressId INT
)
ALTER TABLE tblCustomer WITH CHECK ADD CONSTRAINT [FK_Customer_Address_AddressID] FOREIGN KEY(AddressID)
REFERENCES tblAddress (AddressID)
GO
CREATE TABLE tblSalesOrderHeader
(
SalesOrderId INT IDENTITY
PRIMARY KEY ,
CustomerID INT ,
TotalDue MONEY
)
ALTER TABLE tblSalesOrderHeader WITH CHECK ADD CONSTRAINT [FK_Sales_Customer_AddressID] FOREIGN KEY(CustomerID)
REFERENCES tblCustomer (CustomerID)
CREATE TABLE tblProduct
(
ProductID INT IDENTITY
PRIMARY KEY ,
ProductName VARCHAR(100) ,
ProductPrice MONEY
)
GO
CREATE PROCEDURE spgetTotalSales
AS
SELECT SUM(TotalDue) AS TotalSales
FROM tblSalesOrderHeader
GO
CREATE PROCEDURE spGetSalesByCustomer
AS
SELECT FirstName + ' ' + LastName AS CustomerName ,
SUM(TotalDue) AS TotalDue
FROM tblSalesOrderHeader AS OrderHeader
RIGHT JOIN tblCustomer AS Cust ON OrderHeader.CustomerID = Cust.CustomerID
GROUP BY FirstName + ' ' + LastName
ORDER BY TotalDue DESC
GO
CREATE FUNCTION fnGetDate ( )
RETURNS DATETIME
AS
BEGIN
DECLARE @date DATETIME
SELECT @date = GETDATE()
RETURN @date
END
GO
CREATE FUNCTION fnGetSalesByCustomer ( @CustomerID INT )
RETURNS TABLE
AS
RETURN
( SELECT *
FROM tblSalesOrderHeader
WHERE CustomerID = @CustomerID
)
GO
CREATE VIEW vwSalesByCustomer
AS
SELECT FirstName + ' ' + LastName AS CustomerName ,
SUM(TotalDue) AS TotalDue
FROM tblSalesOrderHeader AS OrderHeader
RIGHT JOIN tblCustomer AS Cust ON OrderHeader.CustomerID = Cust.CustomerID
GROUP BY FirstName + ' ' + LastName
GO
INSERT INTO dbo.tblAddress
( AddressLine, City )
VALUES ( 'Rua São Mateus', 'Porto Alegre' ),
( 'Rua Curt Hering', 'Blumenau' ),
( 'Rua XV de Novembro', 'Blumenau' )
INSERT INTO dbo.tblCustomer
( FirstName, LastName, AddressId )
VALUES ( 'Marcos', 'Freccia', 1 ),
( 'Sara', 'Barbosa', 1 )
INSERT INTO dbo.tblSalesOrderHeader
( CustomerID, TotalDue )
VALUES ( 1, 530 ),
( 1, 330 ),
( 2, 760 ),
( 2, 110 )
INSERT INTO dbo.tblProduct
( ProductName, ProductPrice )
VALUES ( 'Arroz', 1.50 ),
( 'Feijão', 2.20 )
EXEC dbo.spGetSalesByCustomer
EXEC dbo.spgetTotalSales
SELECT *
FROM dbo.fnGetSalesByCustomer(1)
SELECT dbo.fnGetDate()