You are on page 1of 5

PIVOT AND UNPIVOT;

INSERT INTO Product(Cust, VALUES('KATE','VEG',2) INSERT INTO Product(Cust, VALUES('KATE','SODA',6) INSERT INTO Product(Cust, VALUES('KATE','MILK',1) INSERT INTO Product(Cust, VALUES('KATE','BEER',12) INSERT INTO Product(Cust, VALUES('FRED','MILK',3) INSERT INTO Product(Cust, VALUES('FRED','BEER',24) INSERT INTO Product(Cust, VALUES('KATE','VEG',3)

CREATE TABLE Product(Cust VARCHAR(25), Product VARCHAR(20), QTY INT) Product, QTY) Product, QTY) Product, QTY) Product, QTY) Product, QTY) Product, QTY) Product, QTY)

GO -- Selecting and checking entires in table SELECT * FROM Product GO -- Pivot Table ordered by PRODUCT SELECT PRODUCT, FRED, KATE FROM ( SELECT CUST, PRODUCT, QTY FROM Product) up PIVOT (SUM(QTY) FOR CUST IN (FRED, KATE)) AS pvt ORDER BY PRODUCT SELECT * FROM Product -- Pivot Table ordered by CUST SELECT CUST, VEG, SODA, MILK, BEER, CHIPS FROM ( SELECT CUST, PRODUCT, QTY FROM Product) up PIVOT (SUM(QTY) FOR PRODUCT IN (VEG, SODA, MILK, BEER, CHIPS)) AS pvt ORDER BY CUST GO -- Unpivot Table ordered by CUST SELECT CUST, PRODUCT, QTY FROM ( SELECT CUST, VEG, SODA, MILK, BEER, CHIPS FROM ( SELECT CUST, PRODUCT, QTY FROM Product) up PIVOT ( SUM(QTY) FOR PRODUCT IN (VEG, SODA, MILK, BEER, CHIPS)) AS pvt) p UNPIVOT (QTY FOR PRODUCT IN (VEG, SODA, MILK, BEER, CHIPS) ) AS Unpvt GO GO

EQUI JOIN
--Join conditions have equivalence operators SELECT dbo.StudentDetails.StudentID, dbo.StudentDetails.StudentName, dbo.StudentTotalMarks.StudentMarks FROM dbo.StudentDetails INNER JOIN dbo.StudentTotalMarks ON dbo.StudentDetails.StudentID = dbo.StudentTotalMarks.StudentID

NON EQUI JOIN


--Join conditions have operators other than equivalence SELECT dbo.StudentDetails.StudentID, dbo.StudentDetails.StudentName, dbo.StudentTotalMarks.StudentMarks FROM dbo.StudentDetails INNER JOIN dbo.StudentTotalMarks ON dbo.StudentTotalMarks.StudentMarks >200 AND dbo.StudentDetails.StudentID = dbo.StudentTotalMarks.StudentID

SELF JOIN
-DROP TABLE Persons CREATE TABLE Persons(pid int, FirstName int) DELETE INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT FROM INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO Persons Persons Persons Persons Persons Persons Persons Persons Persons Persons Persons Persons Persons VARCHAR(25), FatherId int, MotherId

values(1,'Father 1',NULL,NULL) values(2,'Mother 1',NULL,NULL) values(3,'Child 1',1,2) values(4,'Child 2',1,2) values(5,'Father 2',NULL,NULL) values(6,'Mother 2',NULL,NULL) values(7,'Child 3',5,6) values(8,'Child 4',7,NULL) values(5,'Father 3',NULL,NULL) values(6,'Mother 3',NULL,NULL) values(7,'Child 5',5,6) values(8,'Child 6',NULL,NULL)

SELECT father.FirstName "Father Name", mother.FirstName "Mother Name", child.FirstName "Child Name" FROM persons child LEFT JOIN persons father ON child.FatherId = father.pid LEFT JOIN persons mother ON child.MotherId = mother.pid;

NATURAL JOIN
CREATE TABLE countries ( cntr_id INTEGER NOT NULL PRIMARY KEY, country VARCHAR(15) NOT NULL); CREATE TABLE cities ( cty_id INTEGER NOT NULL PRIMARY KEY, cntr_id INTEGER, city VARCHAR(15) NOT NULL); CREATE TABLE places ( plc_id INTEGER NOT NULL PRIMARY KEY, cty_id INTEGER, text VARCHAR(15) NOT NULL); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO countries VALUES (1, countries VALUES (2, cities VALUES (1, 1, cities VALUES (2, 1, cities VALUES (3, 2, places VALUES (1, 1, places VALUES (2, 2, 'LATVIA'); 'ESTONIA'); 'RIGA'); 'LIEPAJA'); 'TALLINN'); 'OLD RIGA'); 'KARA OSTA');

SELECT country FROM countries NATURAL JOIN cities C1 SELECT city, text FROM cities NATURAL LEFT OUTER JOIN places --SQL SERVER DOES NOT SUPPORT NATURAL JOIN

DEFAULT CONSTRAINTS
CREATE TABLE cities ( cty_id INTEGER NOT NULL PRIMARY KEY, cntr_id INTEGER, city VARCHAR(15) NOT NULL); INSERT INTO cities VALUES (1, 1, 'RIGA'); INSERT INTO cities VALUES (2, 1, 'LIEPAJA'); INSERT INTO cities VALUES (3, 2, 'TALLINN'); ALTER TABLE cities ADD CONSTRAINT DF_Cities_city DEFAULT 'UNKNOWN' FOR city INSERT INTO cities (cty_id,cntr_id) VALUES (4, 1); SELECT * FROM Cities

CHECK CONSTRAINTS
ALTER TABLE Cities ADD CONSTRAINT CK_Cities_City CHECK (LEN(City) < 8) INSERT INTO cities VALUES (5, 2, 'OOTAL');

ERROR HANDLING
BEGIN TRY DECLARE @X INT ---- Divide by zero to generate Error SET @X = 0/1 PRINT 'Command after error in TRY block' END TRY BEGIN CATCH PRINT 'Error Detected' END CATCH PRINT 'Command after TRY/CATCH blocks' IF @@ERROR <> 0 BEGIN -- Return 99 to the calling program to indicate failure. PRINT ERROR_MESSAGE() END ELSE BEGIN -- Return 0 to the calling program to indicate success. PRINT 'No Error in the above code' RAISERROR ('An error occured updating the NonFatal table',10,1) END

ERROR FUNCTIONS
BEGIN TRY -- Generate a divide-by-zero error. SELECT 1/0; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage; END CATCH

XML IN SQL SERVER


SELECT ( SELECT 'White' AS Color1, 'Blue' AS Color2, 'Black' AS Color3, 'Light' AS 'Color4/@Special', 'Green' AS Color4, 'Red' AS Color5 FOR XML PATH('Colors'), TYPE ), ( SELECT 'Apple' AS Fruits1, 'Pineapple' AS Fruits2, 'Grapes' AS Fruits3, 'Melon' AS Fruits4 FOR XML PATH('Fruits'), TYPE ) FOR XML PATH(''), ROOT('SampleXML') GO

SELECT * FROM Product FOR XML RAW SELECT * FROM Product FOR XML auto

You might also like