70 461session6
70 461session6
© filecats.co.uk 2018
For the full course, go to www.udemy.com
3. Table Structure
select * from tblDepartment
select * from tblEmployee
select * from tblTransaction
4. Subquery – WHERE
select T.*
from tblTransaction as T
inner join tblEmployee as E
on E.EmployeeNumber = T.EmployeeNumber
where E.EmployeeLastName like 'y%'
order by T.EmployeeNumber
select *
from tblTransaction as T
Where EmployeeNumber in
(Select EmployeeNumber from tblEmployee where EmployeeLastName like 'y%')
order by EmployeeNumber
select *
from tblTransaction as T
Where EmployeeNumber not in
(Select EmployeeNumber from tblEmployee where EmployeeLastName like 'y%')
order by EmployeeNumber -- must be in tblTransaction, and not 126-129
-- LEFT JOIN
select *
Page 1
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
from tblTransaction as T
Where EmployeeNumber <> any -- does not work properly
(Select EmployeeNumber from tblEmployee where EmployeeLastName like 'y%')
order by EmployeeNumber
select *
from tblTransaction as T
Where EmployeeNumber <> all
(Select EmployeeNumber from tblEmployee where EmployeeLastName like 'y%')
order by EmployeeNumber
select *
from tblTransaction as T
Where EmployeeNumber <= all
(Select EmployeeNumber from tblEmployee where EmployeeLastName like 'y%')
order by EmployeeNumber
-- any/some = OR
-- all = AND
select *
from tblTransaction as T
left join tblEmployee as E
on E.EmployeeNumber = T.EmployeeNumber
Where E.EmployeeLastName like 'y%'
order by T.EmployeeNumber
select *
from tblTransaction as T
left join tblEmployee as E
on E.EmployeeNumber = T.EmployeeNumber
Page 2
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
Remainder
select *
from tblTransaction as T
Where exists
(Select EmployeeNumber from tblEmployee as E where EmployeeLastName like 'y%'
and T.EmployeeNumber = E.EmployeeNumber)
order by EmployeeNumber
select *
from tblTransaction as T
Where not exists
(Select EmployeeNumber from tblEmployee as E where EmployeeLastName like 'y%'
and T.EmployeeNumber = E.EmployeeNumber)
order by EmployeeNumber
Page 3
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
with tblWithRanking as
(select D.Department, EmployeeNumber, EmployeeFirstName, EmployeeLastName,
rank() over(partition by D.Department order by E.EmployeeNumber) as
TheRank
from tblDepartment as D
join tblEmployee as E on D.Department = E.Department),
Transaction2014 as
(select * from tblTransaction where DateOfTransaction < '2015-01-01')
12. Exercise 1
select E.EmployeeNumber from tblEmployee as E
left join tblTransaction as T
on E.EmployeeNumber = T.EmployeeNumber
where T.EmployeeNumber IS NULL
order by E.EmployeeNumber
with Numbers as (
select top(select max(EmployeeNumber) from tblTransaction) row_Number()
over(order by (select null)) as RowNumber
from tblTransaction as U)
13. Exercise 2
with Numbers as (
select top(select max(EmployeeNumber) from tblTransaction) row_Number()
over(order by (select null)) as RowNumber
from tblTransaction as U),
Transactions2014 as (
select * from tblTransaction where DateOfTransaction>='2014-01-01' and
DateOfTransaction < '2015-01-01'),
tblGap as (
select U.RowNumber,
RowNumber - LAG(RowNumber) over(order by RowNumber) as PreviousRowNumber,
LEAD(RowNumber) over(order by RowNumber) - RowNumber as NextRowNumber,
Page 4
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
14. Pivot
with myTable as
(select year(DateOfTransaction) as TheYear, month(DateOfTransaction) as TheMonth,
Amount from tblTransaction)
16. UnPivot
SELECT *
FROM [tblPivot]
Page 5
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
UNPIVOT (Amount FOR Month IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12])) AS tblUnPivot
where Amount <> 0
rollback tran
rollback tran
Page 6
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
RETURN @Amount + 1
END
GO
SELECT *
from dbo.TransactionList(123)
select *
from tblEmployee
where exists(select * from dbo.TransactionList(EmployeeNumber))
select *
from tblEmployee as E
where exists(Select EmployeeNumber from tblTransaction as T where
E.EmployeeNumber = T.EmployeeNumber)
Page 7
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
22. Apply
SELECT *
from dbo.TransList(123)
GO
select *
from tblEmployee as E
outer apply TransList(E.EmployeeNumber) as T
select *
from tblEmployee as E
cross apply TransList(E.EmployeeNumber) as T
select *
from tblEmployee as E
where (select count(*) from dbo.TransList(E.EmployeeNumber)) >3
23. Synonyms
create synonym EmployeeTable
for tblEmployee
go
Page 8
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
26. GUIDs
declare @newvalue as uniqueidentifier --GUID
SET @newvalue = NEWID()
SELECT @newvalue as TheNewID
GO
declare @randomnumbergenerator int = DATEPART(MILLISECOND,SYSDATETIME())
+1000*(DATEPART(SECOND,SYSDATETIME())
+60*(DATEPART(MINUTE,SYSDATETIME())
+60*DATEPART(HOUR,SYSDATETIME())))
SELECT RAND(@randomnumbergenerator) as RandomNumber;
begin tran
Create table tblEmployee4
(UniqueID uniqueidentifier CONSTRAINT df_tblEmployee4_UniqueID DEFAULT NEWID(),
EmployeeNumber int CONSTRAINT uq_tblEmployee4_EmployeeNumber UNIQUE)
Page 9
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
Page 10
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
begin tran
select * from tblTransaction
INSERT INTO tblTransaction(Amount, DateOfTransaction, EmployeeNumber)
VALUES (1,'2017-01-01',123)
select * from tblTransaction WHERE EmployeeNumber = 123;
update tblTransaction
set NextNumber = NEXT VALUE FOR newSeq
where NextNumber is null
select * from tblTransaction --WHERE EmployeeNumber = 123
ROLLBACK TRAN
select @x
update [dbo].[tblEmployee]
set XMLOutput = @x
where EmployeeNumber = 200
Page 11
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
Page 12
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
select @x
Page 13
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
Page 14
70-461 Session 6: Querying Microsoft SQL Server 2012
© filecats.co.uk 2018
For the full course, go to www.udemy.com
select * from
openrowset(BULK 'C:\XML\SampleDataOpenRowset.txt', SINGLE_BLOB) AS x
select * from #tblXML
43. Schema
select E.EmployeeNumber, E.EmployeeFirstName, E.EmployeeLastName
, T.Amount, T.DateOfTransaction
from [dbo].[tblEmployee] as E
left join [dbo].[tblTransaction] as T
on E.EmployeeNumber = T.EmployeeNumber
where E.EmployeeNumber between 200 and 202
for xml raw, xmlschema --, xmldata
Page 15