· 6 years ago · Mar 26, 2019, 11:00 AM
1IF EXISTS (
2 SELECT *
3 FROM INFORMATION_SCHEMA.TABLES
4 WHERE TABLE_NAME = 'DIM_TIME')
5 BEGIN
6 DROP TABLE Pietrzak.DIM_TIME;
7 PRINT 'Usunięto tabelę Pietrzak.DIM_TIME'
8 END
9ELSE
10 BEGIN
11 PRINT 'Tabela nie istnieje'
12 END;
13
14IF EXISTS (
15 SELECT *
16 FROM INFORMATION_SCHEMA.TABLES
17 WHERE TABLE_NAME = 'Tygodnie')
18 BEGIN
19 DROP TABLE Pietrzak.Tygodnie;
20 PRINT 'Usunięto tabelę Pietrzak.Tygodnie'
21 END
22ELSE
23 BEGIN
24 PRINT 'Tabela nie istnieje'
25 END;
26
27IF EXISTS (
28 SELECT *
29 FROM INFORMATION_SCHEMA.TABLES
30 WHERE TABLE_NAME = 'Miesiace')
31 BEGIN
32 DROP TABLE Pietrzak.Miesiace;
33 PRINT 'Usunięto tabelę Pietrzak.Miesiace'
34 END
35ELSE
36 BEGIN
37 PRINT 'Tabela nie istnieje'
38 END;
39
40CREATE TABLE Pietrzak.DIM_TIME (
41 PK_TIME INT PRIMARY KEY,
42 Rok INT,
43 Kwartal INT,
44 MiesiacSlownie NVARCHAR(20),
45 DzienTygodniaSlownie NVARCHAR(20),
46 DzienMiesiaca INT
47)
48
49CREATE TABLE Pietrzak.Miesiace (
50 ID INT NOT NULL PRIMARY KEY,
51 Nazwa NVARCHAR(20) NOT NULL
52)
53
54CREATE TABLE Pietrzak.Tygodnie (
55 ID INT NOT NULL PRIMARY KEY,
56 Nazwa NVARCHAR(20) NOT NULL
57)
58
59INSERT INTO Pietrzak.Miesiace (ID, Nazwa) VALUES
60 (1, 'STYCZEŃ'), (2, 'LUTY'), (3, 'MARZEC'), (4, 'KWIECIEŃ'), (5, 'MAJ'), (6, 'CZERWIEC'),
61 (7, 'LIPIEC'), (8, 'SIERPIEŃ'), (9, 'WRZESIEŃ'), (10, 'PAŹDZIERNIK'), (11, 'LISTOPAD'), (12, 'GRUDZIEŃ')
62
63INSERT INTO Pietrzak.Tygodnie (ID, Nazwa) VALUES
64 (1, 'PONIEDZIAÅEK'), (2, 'WTOREK'), (3, 'ÅšRODA'), (4, 'CZWARTEK'),
65 (5, 'PIĄTEK'), (6, 'SOBOTA'), (7, 'NIEDZIELA')
66
67INSERT INTO Pietrzak.DIM_TIME (PK_TIME, Rok, Kwartal, MiesiacSlownie, DzienTygodniaSlownie, DzienMiesiaca)
68SELECT
69 10000*YEAR(dataTable.D) + 100*MONTH(dataTable.D) + DAY(dataTable.D),
70 YEAR(dataTable.D),
71 DATEPART(QUARTER, dataTable.D),
72 (SELECT Nazwa FROM Pietrzak.Miesiace WHERE ID=MONTH(dataTable.D)),
73 (SELECT Nazwa FROM Pietrzak.Tygodnie WHERE ID=DATEPART(WEEKDAY, dataTable.D)),
74 DAY(dataTable.D)
75FROM (
76 SELECT OrderDate AS D
77 FROM Sales.SalesOrderHeader
78 UNION
79 SELECT ShipDate AS D
80 FROM Sales.SalesOrderHeader
81) AS dataTable
82
83ALTER TABLE Pietrzak.FACT_SALES WITH NOCHECK
84ADD
85 CONSTRAINT FK_ORDER_TIME_PK_TIME FOREIGN KEY (OrderDate) REFERENCES Pietrzak.DIM_TIME(PK_TIME),
86 CONSTRAINT FK_SHIP_TIME_PK_TIME FOREIGN KEY (ShipDate) REFERENCES Pietrzak.DIM_TIME(PK_TIME)