# KBaz 1
-- Zadanie 1
-- SELECT DISTINCT addres.[City]
-- FROM [SalesLT].[SalesOrderHeader] ship INNER JOIN [SalesLT].[Address] addres
-- ON ship.ShipToAddressID = addres.[AddressID]
-- WHERE ship.[Status] = 5
-- ORDER BY addres.[City]
-- SELECT addres.[City]
-- FROM [SalesLT].[SalesOrderHeader] ship INNER JOIN [SalesLT].[Address] addres
-- ON ship.ShipToAddressID = addres.[AddressID]
-- WHERE ship.[Status] = 5
-- GROUP BY addres.City
-- ORDER BY addres.[City]
-- Zadanie 2
-- SELECT m.Name, COUNT(m.Name) as Number FROM [SalesLT].[ProductModel] m
-- RIGHT JOIN [SalesLT].[Product] p
-- ON m.[ProductModelID] = p.[ProductModelID]
-- GROUP BY m.Name
-- HAVING COUNT(m.Name) > 1
-- Zadanie 3
-- SELECT addr.City, COUNT(DISTINCT c.[CustomerID]) as Customers, COUNT(DISTINCT c.SalesPerson) as SalesPerson
-- FROM [SalesLT].[Customer] c, [SalesLT].[CustomerAddress] cA, [SalesLT].[Address] addr
-- WHERE c.[CustomerID] = cA.[CustomerID] AND cA.[AddressID] = addr.[AddressID]
-- GROUP BY addr.City
-- Zadanie 4
-- WITH NOLEAF (ProductCategoryID,ParentProductCategoryID,Name) AS
-- (
-- SELECT ProductCategoryID,ParentProductCategoryID,Name FROM [SalesLT].[ProductCategory]
-- WHERE ParentProductCategoryID IS NULL
-- UNION ALL
-- SELECT cur.ProductCategoryID,cur.ParentProductCategoryID,cur.Name FROM [SalesLT].[ProductCategory] cur
-- INNER JOIN NOLEAF nol
-- ON nol.ParentProductCategoryID = cur.ProductCategoryID
-- )
-- SELECT mod.Name as Category, pro.Name as Product FROM NOLEAF mod
-- INNER JOIN [SalesLT].[Product] pro ON pro.[ProductCategoryID] = mod.ProductCategoryID
-- Zadanie 5
-- SELECT c.[FirstName], c.[LastName], ISNULL(SUM(sOD.[UnitPriceDiscount] * sOD.[OrderQty]),0) as Discount
-- FROM [SalesLT].[Customer] c
-- LEFT JOIN [SalesLT].[SalesOrderHeader] sH ON c.[CustomerID] = sH.[CustomerID]
-- LEFT JOIN [SalesLT].[SalesOrderDetail] sOD ON sH.[SalesOrderID] = sH.[SalesOrderID]
-- GROUP BY c.[CustomerID], c.[FirstName], c.[LastName]
-- Zadanie 6
--GETDATE()
-- DROP TABLE OrdersToProcess
-- CREATE TABLE OrdersToProcess
-- (
-- SalesOrderID INT PRIMARY KEY,
-- Delayed BIT
-- );
-- GO
-- MERGE OrdersToProcess AS TARGET
-- USING [SalesLT].[SalesOrderHeader] AS SOURCE
-- ON TARGET.SalesOrderID = SOURCE.SalesOrderID
-- WHEN MATCHED THEN UPDATE SET TARGET.Delayed=(CASE WHEN SOURCE.[DueDate] < CONVERT(DATETIME, '2009-09-25') THEN 1 ELSE 0 END)
-- WHEN NOT MATCHED THEN INSERT VALUES(SOURCE.SalesOrderID,(CASE WHEN SOURCE.[DueDate] < CONVERT(DATETIME, '2009-09-25') THEN 1 ELSE 0 END));
-- SELECT * FROM OrdersToProcess
-- WHERE SalesOrderID = 71774
-- SELECT * FROM [SalesLT].[SalesOrderHeader]
-- WHERE SalesOrderID = 71774
-- Zadanie 7
-- DROP TABLE IDEN_TABLE1
-- DROP TABLE IDEN_TABLE2
-- CREATE TABLE IDEN_TABLE1
-- (
-- ID INT IDENTITY(1000,10),
-- Name VARCHAR(100)
-- )
-- CREATE TABLE IDEN_TABLE2
-- (
-- ID INT IDENTITY(1000,10),
-- Name VARCHAR(100)
-- )
-- INSERT IDEN_TABLE1 VALUES ('MMM')
-- INSERT IDEN_TABLE1 VALUES ('DDD')
-- PRINT @@IDENTITY -- Zwraca ostatnią wstawioną wartość
-- PRINT IDENT_CURRENT('IDEN_TABLE1') -- Zwraca ostatnią wstawioną wartość w tabeli
-- INSERT IDEN_TABLE2 VALUES ('AAA')
-- PRINT @@IDENTITY -- Zwraca ostatnią wstawioną wartość
-- PRINT IDENT_CURRENT('IDEN_TABLE1') -- Zwraca ostatnią wstawioną wartość w tabeli
-- PRINT IDENT_CURRENT('IDEN_TABLE2') -- Zwraca ostatnią wstawioną wartość w tabeli
-- Zadanie 8
-- SELECT definition FROM sys.check_constraints
-- WHERE name LIKE 'CK_SalesOrderHeader_ShipDate'
-- DROP TABLE IF EXISTS DATE_TABLE
-- CREATE TABLE DATE_TABLE
-- (
-- ID INT IDENTITY,
-- ShipDate DATETIME,
-- OrderDate DATETIME
-- )
-- ALTER TABLE DATE_TABLE
-- ADD CONSTRAINT SomeName CHECK (ShipDate>=OrderDate OR [ShipDate] IS NULL)
-- INSERT INTO DATE_TABLE VALUES ('2020-01-01','2020-01-01')
-- --INSERT INTO DATE_TABLE VALUES ('2000-01-01','2020-01-01')
-- alter table DATE_TABLE nocheck constraint SomeName
-- INSERT INTO DATE_TABLE VALUES ('2000-01-01','2020-01-01')
-- alter table DATE_TABLE check constraint SomeName
-- dbcc checkconstraints ('DATE_TABLE')
-- SELECT * FROM DATE_TABLE
-- Zadanie 9
-- ALTER TABLE [SalesLT].[Customer]
-- ADD CreditCardNumber CHAR
-- GO
-- UPDATE [SalesLT].[SalesOrderHeader] SET [CreditCardApprovalCode] = 000 WHERE SalesOrderID = 71774
-- UPDATE [SalesLT].[SalesOrderHeader] SET [CreditCardApprovalCode] = 000 WHERE SalesOrderID = 71776
-- UPDATE [SalesLT].[SalesOrderHeader] SET [CreditCardApprovalCode] = 000 WHERE SalesOrderID = 71780
-- UPDATE [SalesLT].[Customer]
-- SET CreditCardNumber = 'X'
-- WHERE CustomerID IN (SELECT CustomerID FROM [SalesLT].[SalesOrderHeader] WHERE CreditCardApprovalCode IS NOT NULL)
-- -- SELECT * FROM [SalesLT].[SalesOrderHeader]
-- -- ORDER BY SalesOrderID
-- SELECT CreditCardNumber,COUNT(CustomerID) FROM [SalesLT].[Customer]
-- GROUP BY CreditCardNumber
-- Zadanie 10
-- DROP TABLE IF EXISTS S1
-- DROP TABLE IF EXISTS M1
-- DROP TABLE IF EXISTS S2
-- DROP TABLE IF EXISTS M2
-- CREATE TABLE M1
-- (
-- K INT PRIMARY KEY,
-- V VARCHAR(20)
-- )
-- CREATE TABLE S1
-- (
-- K INT PRIMARY KEY,
-- MFK INT FOREIGN KEY REFERENCES M1(K),
-- V VARCHAR(20)
-- )
-- INSERT INTO M1 VALUES (0,'Ala');
-- INSERT INTO M1 VALUES (1,'ma');
-- INSERT INTO M1 VALUES (2,'kota');
-- INSERT INTO S1 VALUES (0,0,'Bob');
-- INSERT INTO S1 VALUES (1,1,'ma');
-- INSERT INTO S1 VALUES (2,2,'dużego');
-- GO
-- INSERT INTO S1 VALUES (3,3,'psa');
-- GO
-- CREATE TABLE M2
-- (
-- K1 INT,
-- K2 INT,
-- V VARCHAR(20),
-- CONSTRAINT DUOPRIM PRIMARY KEY(K1,K2)
-- )
-- CREATE TABLE S2
-- (
-- K INT PRIMARY KEY,
-- MFK1 INT,
-- MFK2 INT,
-- V VARCHAR(20),
-- CONSTRAINT DUOFOR FOREIGN KEY(MFK1,MFK2) REFERENCES M2(K1,K2)
-- )
-- INSERT INTO M2 VALUES (0,0,'Ala');
-- INSERT INTO M2 VALUES (0,1,'ma');
-- INSERT INTO M2 VALUES (1,0,'kota');
-- INSERT INTO S2 VALUES (0,0,0,'Bob');
-- INSERT INTO S2 VALUES (1,0,1,'ma');
-- INSERT INTO S2 VALUES (2,1,0,'dużego');
-- GO
-- INSERT INTO S2 VALUES (3,1,1,'psa');
-- GO
-----------------------------
-- DROP TABLE IF EXISTS S1
-- DROP TABLE IF EXISTS M1
-- DROP TABLE IF EXISTS S2
-- DROP TABLE IF EXISTS M2
-- CREATE TABLE M1
-- (
-- K INT PRIMARY KEY,
-- V VARCHAR(20)
-- )
-- CREATE TABLE S1
-- (
-- K INT PRIMARY KEY,
-- MFK INT FOREIGN KEY
-- REFERENCES M1(K)
-- -- ON UPDATE NO ACTION
-- -- ON DELETE NO ACTION,
-- -- ON UPDATE SET NULL
-- -- ON DELETE SET NULL,
-- ON UPDATE CASCADE
-- ON DELETE CASCADE,
-- V VARCHAR(20)
-- )
-- INSERT INTO M1 VALUES (0,'Ala');
-- INSERT INTO M1 VALUES (1,'ma');
-- INSERT INTO M1 VALUES (2,'kota');
-- INSERT INTO S1 VALUES (0,0,'Bob');
-- INSERT INTO S1 VALUES (1,1,'ma');
-- INSERT INTO S1 VALUES (2,2,'dużego');
-- SELECT * FROM S1;
-- UPDATE M1 SET K=4 WHERE K=0
-- DELETE M1 WHERE K=1
-- SELECT * FROM S1;