14 Sql4 Select Null Je Case
-
Upload
alexandra-gabriela-grecu -
Category
Documents
-
view
240 -
download
0
Transcript of 14 Sql4 Select Null Je Case
-
8/19/2019 14 Sql4 Select Null Je Case
1/42
SQL (4)Predicate & NULL, joncţiuni externe,
structuri CASEMarinFotace
Universitatea Al.I. Cuza Iași
Facultatea de Economie și Administrarea Afacerilor
Departamentul de Contabilitate, Informatică economică șiStatistică
-
8/19/2019 14 Sql4 Select Null Je Case
2/42
Linii!e ta"e!ei CL#EN$#
%a!ori NULL a!e
atri"utu!ui e!e'on
-
8/19/2019 14 Sql4 Select Null Je Case
3/42
NULL o ri*+ ro"!e*+
SELECT * FROM clientiW HERE Telefon IN ('0232212121', NULL
-
8/19/2019 14 Sql4 Select Null Je Case
4/42
NULL a doua ro"!e*+Care dintre clienţi au adresa specifcată /
cunoscută ?SELECT * FRO M clienti
W HERE !"#e$% NO T IN (NULL
-
8/19/2019 14 Sql4 Select Null Je Case
5/42
Extra-erea .a!ori!or NULL
Pentru care dintre clienţi nu se cunoaşteadresa ?
SELECT * FRO M clienti
W HERE !"#e$% IS NULL
-
8/19/2019 14 Sql4 Select Null Je Case
6/42
#S NULL corect / NULL incorect 000
SELECT *FROM CLIENTI
W HERE !"#e$% & NULL
-
8/19/2019 14 Sql4 Select Null Je Case
7/42
1rdon+ri 2i NULLit+ţi
Să se ordoneze clienţii după numerele deteleon, valorile NULL find plasate la nceput
SELECT * FRO M clienti
ORER ) Telefon NULLS FIRST
-
8/19/2019 14 Sql4 Select Null Je Case
8/42
3ou+ ta"e!e noi PE5S1NAL6
-
8/19/2019 14 Sql4 Select Null Je Case
9/42
62i SP15U5#
-
8/19/2019 14 Sql4 Select Null Je Case
10/42
Crearea ce!or dou+ ta"e!e
C5EAE A7LE ersona! (Marca NUME5#C(8) N1 NULL C1NS5A#N 9:ersona!; P5#MA5< =EA5(4?) N1 NULL,
3ataNast 3AE,
Co*art %A5C>A5(;?),
MarcaSe' NUME5#C(8) C1NS5A#N '9:ersona!; 5EFE5ENCES ersona!
(*arca),Sa!ari'ar NUME5#C(@;,;)
)
C5EAE A7LE soruri (
An NUME5#C(4) N1 NULL,
Luna NUME5#C(;) N1 NULL,Marca NUME5#C(8) N1 NULL
C1NS5A#N '9:soruri:ersona! 5EFE5ENCES ersona! (*arca),
Sor%eci*e NUME5#C(@;,;),
SorNoate NUME5#C(@;,;),
SorC3 NUME5#C(@;,;),
A!teSor NUME5#C(@;,;),C1NS5A#N 9:soruri P5#MA5< =E< (an,!una,*arca) )
-
8/19/2019 14 Sql4 Select Null Je Case
11/42
Pou!area ce!or dou+ ta"e!e (@)ISE!" I"# personal $A%UES &', (A)A*A" '(, DA"E('+-/0/'(,
(DI!EC"IUE(, U%%, '//1 2ISE!" I"# personal $A%UES &-, (A)A*A" -(, DA"E('+00'/''(, (FIACIA!(, ',
'34/1 2
ISE!" I"# personal $A%UES &5, (A)A*A" 5(, DA"E('+-/6/-(, (7A!8E"I)(,', '34/1 2
ISE!" I"# personal $A%UES &3, (A)A*A" 3(, U%%, (FIACIA!(, -, '56/1 2
ISE!" I"# personal $A%UES &4, (A)A*A" 4(, DA"E('+4/35/(, (FIACIA!(, -,'3-/1 2
ISE!" I"# personal $A%UES &, (A)A*A" (, DA"E('+4''/+(, (FIACIA!(, 4,'54/1 2
ISE!" I"# personal $A%UES &0, (A)A*A" 0(, U%%, (FIACIA!(, 4, '-6/1 2
ISE!" I"# personal $A%UES &6, (A)A*A" 6(, DA"E('+/'-5'(, (7A!8E"I)(,5, '-+/1 2
ISE!" I"# personal $A%UES &+, (A)A*A" +(, DA"E('+0/--6(, (7A!8E"I)(,5, '3'/1 2
ISE!" I"# personal $A%UES &'/, (A)A*A" '/(, DA"E('+0-/'-+(,
(!ESU!SE U7AE(, ', '50/1 2
-
8/19/2019 14 Sql4 Select Null Je Case
12/42
ISE!" I"# sporuri $A%UES &-/'', 4, -, 6/, 34, /, 0/1 2
ISE!" I"# sporuri $A%UES &-/'', 4, 5, '34, /, /, /1 2
ISE!" I"# sporuri $A%UES &-/'', 4, '/, '50, /, /, 35/1 2
ISE!" I"# sporuri $A%UES &-/'', , ', '/, /, /, /1 2
ISE!" I"# sporuri $A%UES &-/'', , -, 6/, /, /, '4/1 2
ISE!" I"# sporuri $A%UES &-/'', , 3, 4/, '4, 66, '-/1 2
ISE!" I"# sporuri $A%UES &-/'', , 4, '5/, '4, /, -/1 2ISE!" I"# sporuri $A%UES &-/'', , '/, -//, '-, /, 1 2
ISE!" I"# sporuri $A%UES &-/'', 0, ', '/, /, U%%, U%%1 2
ISE!" I"# sporuri $A%UES &-/'', 0, -, 6/, /, /, '461 2
ISE!" I"# sporuri $A%UES &-/'', 0, 5, '34, /, /, /1 2
ISE!" I"# sporuri $A%UES &-/'', 0, 3, 4/, '4, U%%, '41 2
ISE!" I"# sporuri $A%UES &-/'', 0, 4, '5/, /, /, '-/1 2
ISE!" I"# sporuri $A%UES &-/'', 0, , ''/, '30, /, /1 2
ISE!" I"# sporuri $A%UES &-/'', 0, 0, /, -'/, /, /1 2
ISE!" I"# sporuri $A%UES &-/'', 0, 6, '5/, /, '4, /1 2
ISE!" I"# sporuri $A%UES &-/'', 0, +, '3/, '//, 00, /1 2
ISE!" I"# sporuri $A%UES &-/'', 0, '/, -//, /, /, '-/1 2
Pou!area ce!or dou+ ta"e!e (;)
-
8/19/2019 14 Sql4 Select Null Je Case
13/42
Care sunt ersoane!e 2i !uni!e entrucare nu sa ca!cu!at (nu se cunoa2te)
soru! entru condiţii deose"ite B
SELECT SM %#c%, N+ e-#en,
Co .%#t, !n, L+n%
FRO M .e#$on%l . INNER /O IN $.o#+#i $ O N .M %#c%& $M %#c%
W HERE S.o#C IS NULL
-
8/19/2019 14 Sql4 Select Null Je Case
14/42
Care sunt ersoane!e 2i !uni!e entrucare soru! entru condiţii deose"ite a
'ost ero B
SELECT SM %#c%, N+ e-#en, Co .%#t, !n, L+n%
FRO M .e#$on%l . INNER /OIN $.o#+#i $ ON
.M %#c%& $M %#c%W HERE S.o#C & 0
OR ER ) N+ e-#en,
!n, L+n%
-
8/19/2019 14 Sql4 Select Null Je Case
15/42
Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (@)
SELECT $M %#c%, N+ e-#en, Co .%#t,
S.o#eci e, S.o#No%.te, S.o#C,
!lteS.o#, S.o#eci e S.o#No%.te S.o#C !lteS.o# !S Tot%lS.o#+#i
FRO M .e#$on%l . INNER /OIN $.o#+#i $
O N .M %#c%& $M %#c%
W HERE !n & 2011 !N L+n%&
-
8/19/2019 14 Sql4 Select Null Je Case
16/42
Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (;)
-
8/19/2019 14 Sql4 Select Null Je Case
17/42
Con.ertirea NULLit+Gi!or
#rice valoare U%% poate 9 :nlocuită cu oaltă valoare, numerică, șir, dată ...
Func;ii< C#A%ESCE, $A%UE, $%
E=< C1ALESCE (SorC3, ?)◦ Dacă valoarea lui SporCD nu este NULL, func iaț
COALESCE o returnează ca atare
◦ Dacă valoarea lui SporCD este NULL, func iaț
COALESCE returnează valoarea 0 Alte e=< C1ALESCE (Loca!itate, H#asiI),
C1ALESCE (3ataFact, CU55EN:3AE)
-
8/19/2019 14 Sql4 Select Null Je Case
18/42
Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (J)
SELECT $M %#c%, N+ e-#en, Co .%#t,S.o#eci e, S.o#No%.te, S.o#C, !lteS.o#,
CO!LESCE(S.o#eci e,0
CO!LESCE(S.o#No%.te,0 CO!LESCE(S.o#C,0
CO!LESCE(!lteS.o#,0 !S Tot%lS.o#+#i
FRO M .e#$on%l . INNER /OIN $.o#+#i $ON .M %#c%& $M %#c%
W HERE !n & 2011 !N L+n%&
-
8/19/2019 14 Sql4 Select Null Je Case
19/42
Care este tota!u! soruri!or Dec+ruian-ajat e !una iu!ie ;?@@ B (4)
-
8/19/2019 14 Sql4 Select Null Je Case
20/42
Kru+ri 2i NULLit+ţi
Să se determine, n ta!el "#C$U%&, dec'te ori apare fecare valoarea distinctăa atri!utului (!s
SE%EC" C#A%ESCEbs,(> fara observatii
>(1, C#U"&>1 F!#7 facturi
)!#U? @ #bs
#!DE! @ #bs U%%S %AS"
-
8/19/2019 14 Sql4 Select Null Je Case
21/42
oncţiunea extern+
-
8/19/2019 14 Sql4 Select Null Je Case
22/42
oncţiunea extern+ n SQL;
La stângaSELECT *
FO! r" LEFT OUTER JOIN r# ON r"$C%r#$C
La dreapta
SELECT *
FO! r" RIGHT OUTER &O'N r# ON r"$C%r#$C
Totală
SELECT *
FO! r" FULL OUTER JOIN r# ON r"$C%r#$C
-
8/19/2019 14 Sql4 Select Null Je Case
23/42
Ex!icatii deta!iate desre jonctiunea externa
http://stackoer!lo"#co$/%&est'ons/()*+,/d'!!er ence-.et"een-'nner-and-o&ter-o'ns
-
8/19/2019 14 Sql4 Select Null Je Case
24/42
SELECT *
FRO M co"+#i4.o$t%le C- LEFT O UTER /O IN
clienti C ON C-Co"-o$t & CCo"-o$tW HERE CCo"-o$t IS NULL
Care sunt coduri!e o2ta!e !acare nu se aO+ niciun c!ient B
-
8/19/2019 14 Sql4 Select Null Je Case
25/42
SELECT !n, L+n%, .M %#c%, N+ e-#en, S.o#No%.teFRO M .e#$on%l . INNER /O IN $.o#+#i $
O N .M %#c%& $M %#c% !N !n& 2011 !NL+n%& 5
ORER ) N+ e-#en, !n, L+n%
Soruri de noate e !una *ai;?@@ (@)
-
8/19/2019 14 Sql4 Select Null Je Case
26/42
Soruri de noate e !una *ai ;?@@(;)
SELECT !n, L+n%, .M %#c%, N+ e-#en, S.o#No%.te
FROM .e#$on%l . LEFT OUTER /OIN $.o#+#i $
O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5
O RER ) N+ e-#en, !n, L+n%
S i d t ! i ;?@@
-
8/19/2019 14 Sql4 Select Null Je Case
27/42
Soruri de noate e !una *ai ;?@@(J)
SELECT CO!LESCE(!n,2011 !S !n, CO!LESCE(L+n%,5 !S
L+n%, .M %#c%, N+ e-#en,CO!LESCE (S.o#No%.te,0 !S S.o#No%.te
FRO M .e#$on%l . LEFT O UTER /O IN $.o#+#i $
O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5
O RER ) N+ e-#en, !n, L+n%
-
8/19/2019 14 Sql4 Select Null Je Case
28/42
SELECT .M %#c%, N+ e-#en,
CO!LESCE ($5S.o#No%.te,0 !S 6S.No%.teM !I6,
CO!LESCE ($7S.o#No%.te,0 !S6S.No%.teIUNIE6
FRO M .e#$on%l .
LEFT O UTER /O IN $.o#+#i $5 ON
.M %#c%& $5M %#c%!N $5!n& 2011 !N $5L+n%& 5
LEFT O UTER /O IN $.o#+#i $7 ON.M %#c%& $7M %#c%
!N $7!n& 2011 !N $7L+n%& 7
Soruri de noate e !uni!e MA#i #UN#E ;?@@ (@)
S i d ! i! MA#
-
8/19/2019 14 Sql4 Select Null Je Case
29/42
Soruri de noate e !uni!e MA#2i #UN#E ;?@@ (;)
-
8/19/2019 14 Sql4 Select Null Je Case
30/42
Soruri de noate e tri*estru!; ;?@@, !unar i cu*u!at (@)
SELECT .M %#c%, N+ e-#en,CO!LESCE ($8S.o#No%.te,0 !S 6S.No%.te !-RILIE6,
CO!LESCE ($5S.o#No%.te,0 !S 6S.No%.te M !I6,
CO!LESCE ($7S.o#No%.te,0 !S 6S.No%.te IUNIE6,
CO!LESCE ($8S.o#No%.te,0 CO!LESCE ($5S.o#No%.te,0 CO!LESCE ($7S.o#No%.te,0 !S 6S.No%.te TRIM 26
FRO M .e#$on%l .
LEFT OUTER /O IN $.o#+#i $8 O N .M %#c%& $8M %#c%
!N $8!n& 2011 !N $8L+n%& 8
LEFT OUTER /O IN $.o#+#i $5 O N .M %#c%& $5M %#c%
!N $5!n& 2011 !N $5L+n%& 5
LEFT OUTER /O IN $.o#+#i $7 O N .M %#c%& $7M %#c%
!N $7!n& 2011 !N $7L+n%& 7
O R ER ) N+ e-#en
S i d t t i t !
-
8/19/2019 14 Sql4 Select Null Je Case
31/42
Soruri de noate e tri*estru!; ;?@@, !unar i cu*u!at (;)
-
8/19/2019 14 Sql4 Select Null Je Case
32/42
7!ocuri deciiona!e (teste)*u!ti!e
$estea proastă< :n SB% nu e=istă #F $estea bună< e=istă CASE care oacă pe post de
IF multiplu<
◦ IF con(i ieț THEN )loclansatc+n(con(i iaesten(eplinităț
EL0E )loclansatc+n(con(i iaNUesten(eplinităț EN1 IF
◦ 230E
>EN condi;ie' >EN bloclansatcndcondi;ia'este
:ndeplinită
>EN condi;ie- >EN bloclansatcndcondi;ia-este :ndeplinită
...
ELSE bloclansatcndniciunadintrecondi;iiledemaisus
Ueste:ndeplinită
◦ EN1
CRţi dintre c!ienţi sunt din
-
8/19/2019 14 Sql4 Select Null Je Case
33/42
CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara
#a2u!ui B (@)SELECT C!SE Loc
W HEN 'I%$i' THEN 'in I%$i'
ELSE 'in %f%#% I%$+l+i'
EN !S -o9ition%#e,
CO UNT(* !S N#Clienti
FRO M clienti c INNER /O IN co"+#i4.o$t%le c.
O N cCo"-o$t & c.Co"-o$t:RO U- ) C!SE Loc
W HEN 'I%$i' THEN 'in I%$i' ELSE 'in %f%#%
I%$+l+i'
EN
CRţi dintre c!ienţi s nt din
-
8/19/2019 14 Sql4 Select Null Je Case
34/42
CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara
#a2u!ui B (;)
CRţi dintre c!ienţi sunt din
-
8/19/2019 14 Sql4 Select Null Je Case
35/42
CRţi dintre c!ienţi sunt din!oca!itatea #a2i 2i cRţi din a'ara
#a2u!ui B (J)SE%EC"
CASE
E %oc G (Iasi( "E (Din Iasi(
E%SE (Din afara Iasului(ED AS ?ozitionare,
C#U"&>1 AS rClienti
F!#7 clienti c IE! *#I coduriHpostale cp# c.Cod?ost G cp.Cod?ost
)!#U? @ CASE E %oc G (Iasi( "E (Din Iasi(
E%SE (Din afara Iasului( ED
-
8/19/2019 14 Sql4 Select Null Je Case
36/42
Kru+ri, NULL 2i CASESă se afşeze c'te acturi au o!servaţii )adică
valoarea atri!utului (!s este nenulă* şi c'tenu au
SELECT C!SE W HEN CO!LESCE(O;$,' ' & ' '
THEN '* f%#% o;$e#
-
8/19/2019 14 Sql4 Select Null Je Case
37/42
SELECT C!SE W HEN $!n IS NULL THEN 2011 ELSE $!n
EN !S !n,
C!SE W HEN $L+n% IS NULL THEN 5 ELSE $L+n%
EN !S L+n%,
.M %#c%, N+ e-#en,
C!SE W HEN S.o#No%.te IS NULL THEN 0 ELSE
$S.o#No%.te EN !S S.o#No%.te
FRO M .e#$on%l . LEFT OUTER /O IN $.o#+#i $
O N .M %#c%& $M %#c% !N !n& 2011 !N L+n%& 5
O RER ) N+ e-#en, !n, L+n%
Soruri de noate e !una *ai;?@@ (4)
('+r+ C1ALESCE)
an-a a au r * n u e
-
8/19/2019 14 Sql4 Select Null Je Case
38/42
an-a a au r * , n u e;?@@, sor entru condiţii
deose"ite 2i cRţi nu BSELECT C!SE W HEN S.o#C = 0 THEN
'!+ $.o# C' ELSE 'N+ %+ $.o# C' EN !S
6Sit+%tie6, CO UNT(* !S N#
FRO M $.o#+#iW HERE !n& 2011 !N L+n%&
:RO U- ) C!SE W HEN S.o#C = 0 THEN
'!+ $.o# C' ELSE 'N+ %+ $.o# C' EN
C ! R + i! di
-
8/19/2019 14 Sql4 Select Null Je Case
39/42
Care este .a!oarea .Rn+ri!or dinDecare i a s+t+*Rnii (#) B
SELECT TO 4CH!R(%t%F%ct, '"%>' !S ?i4S%.t% in%,
SUM (C%ntit%te * -#etUnit * (1 -#ocT! !S in9%#i4?i4S%.t
FRO M f%ct+#i f INNER /O IN liniif%ct lf O N fN#f%ct& lfN#F%ct
INNER /O IN .#o"+$e . O N lfCo"-#& .Co"-#
:RO U- ) TO 4CH!R(%t%F%ct, '"%>'
O R ER ) C!SE
W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('l+ni', ' on"%>' THEN 1
W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN (' %#@i', 't+e$"%>' THEN 2
W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN (' ie#c+#i', 'A e"ne$"%>' THEN 3W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('Boi', 't+#$"%>' THEN 8
W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('' IN ('$ ;DtD', '$%t+#"%>' THEN 7
W HEN RTRIM (TO 4CH!R(%t%F%ct, '"%>' IN ('"+ inicD', '$+n"%>' TH EN EN
Care este a!oarea Rn +ri!or din
-
8/19/2019 14 Sql4 Select Null Je Case
40/42
Care este .a!oarea .Rn+ri!or dinDecare i a s+t+*Rnii (##) B
Scadenţa 'acturi!or n set ;?@@ este de @
-
8/19/2019 14 Sql4 Select Null Je Case
41/42
Scadenţa 'acturi!or n set ;?@@ este de @i!eT 3ac+ ns+ cade ntro sR*"+t+ sau
du*inic+, atunci scadenţa se *ut+ n !uneai*ediat ur*+toare
SE%EC" rFact, DataFact AS Data Emiterii, DataFact J I"E!$A% ('( DA AS Data Scadenta,
EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 AS Li &nr1 sapt scad.,
"#HCA!&DataFact J I"E!$A% ('( DA, (DA(1 AS Li sapt.scad.,
CASE E EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 G
"E DataFact J I"E!$A% ('6( DA E%SE
CASE E EK"!AC" &D# F!#7 DataFact J I"E!$A% ('( DA1 G /
"E DataFact J I"E!$A% ('0( DA
E%SE DataFact J I"E!$A% ('( DA
ED
ED AS Data scad.corectata
F!#7 facturi
E!E "#HCA!&datafact, (77(1 G (/+-/''(
Scadenţa de @ i!e dac+ ns+ cade
-
8/19/2019 14 Sql4 Select Null Je Case
42/42
Scadenţa de @ i!e dac+ ns+ cadesR*"+ta sau du*inica, atunci se *ut+ n
!unea ur*+toare (;)