/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MSSQL Select Hvordan fjerner jeg null vær~
Fra : Kristina Beck


Dato : 04-10-05 11:19

Hej

Jeg håber der er en der kan hjælpe, jeg har lavet følgende sql select
statement, og det virker i og for sig også men jeg ønsker ikke at have
null værdierne i mit output.
Jeg har brugt Distinct til kun at får en null værdi men kan jeg få den
fjernet også.

SELECT DISTINCT
CASE
WHEN T0.Country = 'DK' AND T1.ItemCode = 'A00010' AND T1.CardCode is
NOT null THEN T1.U_STDK
WHEN T0.Country = 'GB' AND T1.ItemCode = 'A00010' AND T1.CardCode is
NOT null THEN T1.U_STENG
WHEN T0.Country = 'DE' AND T1.ItemCode = 'A00010' OR T1.CardCode is
NOT null THEN T1.U_STTYSK END
FROM OCRD T0 INNER JOIN
OITM T1 ON T0.CardCode = T1.CardCode

Output :
NULL
Dette er en test

På forhånd tak for hjælpen
Kristina



 
 
Jens Gyldenkærne Cla~ (04-10-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-10-05 11:56

Kristina Beck skrev:

> Jeg har brugt Distinct til kun at får en null værdi men kan
> jeg få den fjernet også.

Læg en select uden om:


SELECT st FROM
( SELECT DISTINCT
CASE
WHEN T0.Country = 'DK' AND T1.ItemCode = 'A00010' AND
T1.CardCode is NOT null THEN T1.U_STDK
WHEN T0.Country = 'GB' AND T1.ItemCode = 'A00010' AND
T1.CardCode is NOT null THEN T1.U_STENG
WHEN T0.Country = 'DE' AND T1.ItemCode = 'A00010' OR
T1.CardCode is NOT null THEN T1.U_STTYSK END AS st
FROM OCRD T0 INNER JOIN
OITM T1 ON T0.CardCode = T1.CardCode
) t
WHERE st IS NOT NULL

En anden mulighed er at tjekke for NULL i alle dine CASE-linjer:

SELECT DISTINCT
CASE
WHEN T0.Country = 'DK'
AND T1.ItemCode = 'A00010'
AND T1.CardCode is NOT null
AND T1.U_STDK IS NOT NULL
       THEN T1.U_STDK

WHEN T0.Country = 'GB'
AND T1.ItemCode = 'A00010'
AND T1.CardCode is NOT null
AND T1.U_STENG IS NOT NULL
    THEN T1.U_STENG

WHEN T0.Country = 'DE'
AND (T1.ItemCode = 'A00010'
    OR T1.CardCode is NOT null)
AND T1.U_STTYSK IS NOT NULL
THEN T1.U_STTYSK END AS st
FROM OCRD T0 INNER JOIN
OITM T1 ON T0.CardCode = T1.CardCode
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kristina Beck (04-10-2005)
Kommentar
Fra : Kristina Beck


Dato : 04-10-05 12:34

Jens Gyldenkærne Clausen <jens@gyros.invalid> skrev:
>Kristina Beck skrev:
>
>> Jeg har brugt Distinct til kun at får en null værdi men kan
>> jeg få den fjernet også.
>
>Læg en select uden om:
>
>
>SELECT st FROM
>( SELECT DISTINCT
> CASE
> WHEN T0.Country = 'DK' AND T1.ItemCode = 'A00010' AND
> T1.CardCode is NOT null THEN T1.U_STDK
> WHEN T0.Country = 'GB' AND T1.ItemCode = 'A00010' AND
> T1.CardCode is NOT null THEN T1.U_STENG
> WHEN T0.Country = 'DE' AND T1.ItemCode = 'A00010' OR
> T1.CardCode is NOT null THEN T1.U_STTYSK END AS st
> FROM OCRD T0 INNER JOIN
> OITM T1 ON T0.CardCode = T1.CardCode
>) t
>WHERE st IS NOT NULL

Ovenstående fungere fint, så tak for hjælpen.
>
>En anden mulighed er at tjekke for NULL i alle dine CASE-linjer:
>
>SELECT DISTINCT
> CASE
> WHEN T0.Country = 'DK'
> AND T1.ItemCode = 'A00010'
> AND T1.CardCode is NOT null
> AND T1.U_STDK IS NOT NULL
>        THEN T1.U_STDK
>
> WHEN T0.Country = 'GB'
> AND T1.ItemCode = 'A00010'
> AND T1.CardCode is NOT null
> AND T1.U_STENG IS NOT NULL
>     THEN T1.U_STENG
>
> WHEN T0.Country = 'DE'
> AND (T1.ItemCode = 'A00010'
>     OR T1.CardCode is NOT null)
> AND T1.U_STTYSK IS NOT NULL
> THEN T1.U_STTYSK END AS st
> FROM OCRD T0 INNER JOIN
> OITM T1 ON T0.CardCode = T1.CardCode
>--
>Jens Gyldenkærne Clausen
>Svar venligst under det du citerer, og citer kun det der er
>nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
>hvordan på http://usenet.dk/netikette/citatteknik.html


Jens Gyldenkærne Cla~ (04-10-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-10-05 12:39

slet 0ERFT skrev:

> Ovenstående fungere fint, så tak for hjælpen.

Velbekomme. Hvis du vil gøre lidt til gengæld, må du gerne læse min
signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Michael Zedeler (04-10-2005)
Kommentar
Fra : Michael Zedeler


Dato : 04-10-05 14:08

Kristina Beck wrote:
> Hej
>
> Jeg håber der er en der kan hjælpe, jeg har lavet følgende sql select
> statement, og det virker i og for sig også men jeg ønsker ikke at have
> null værdierne i mit output.
> Jeg har brugt Distinct til kun at får en null værdi men kan jeg få den
> fjernet også.
>
> SELECT DISTINCT
> CASE
> WHEN T0.Country = 'DK' AND T1.ItemCode = 'A00010' AND T1.CardCode is
> NOT null THEN T1.U_STDK
> WHEN T0.Country = 'GB' AND T1.ItemCode = 'A00010' AND T1.CardCode is
> NOT null THEN T1.U_STENG
> WHEN T0.Country = 'DE' AND T1.ItemCode = 'A00010' OR T1.CardCode is
> NOT null THEN T1.U_STTYSK END
> FROM OCRD T0 INNER JOIN
> OITM T1 ON T0.CardCode = T1.CardCode

Hvis du får NULL ud er det fordi T1.U_STDK, T1.U_STENG eller T1.U_STTYSK
er NULL. Det skal du bare have med i dine kriterier. F. eks.

WHEN T0.Country = 'GB' AND T1.ItemCode = 'A00010' AND T1.CardCode is NOT
null AND T1.U_STENG IS NOT NULL THEN T1.U_STENG

Sådan. Iøvrigt ser det lidt mystisk ud at der står et OR i linien der
behandler tyske koder. Er du sikker på at det er skruet rigtigt sammen?

Løsningen med bare at plastre endnu et SELECT udenpå, vil jeg betegne
som et hack. Kører man den slags på en MS SQL server, der er version 7
eller tidligere, bliver forespørgslen markant langsommere, fordi dens
query optimizer ikke kan klappe de to forespørgsler sammen.

Mvh. Michael.

P.s. har du været ansat i Dublyooh?
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Kristina Beck (04-10-2005)
Kommentar
Fra : Kristina Beck


Dato : 04-10-05 14:38

Michael Zedeler <michael@zedeler.dk> skrev:
>Kristina Beck wrote:
>> Hej
>>
>> Jeg håber der er en der kan
>>hjælpe, jeg har lavet følgende sql select
>> statement, og det virker i og for
>>sig også men jeg ønsker ikke at have
>> null værdierne i mit output.
>> Jeg har brugt Distinct til kun at
>>får en null værdi men kan jeg få den
>> fjernet også.
>>
>> SELECT DISTINCT
>> CASE
>> WHEN T0.Country = 'DK' AND
>>T1.ItemCode = 'A00010' AND
>>T1.CardCode is
>> NOT null THEN T1.U_STDK
>> WHEN T0.Country = 'GB' AND
>>T1.ItemCode = 'A00010' AND
>>T1.CardCode is
>> NOT null THEN T1.U_STENG
>> WHEN T0.Country = 'DE' AND
>>T1.ItemCode = 'A00010' OR
>>T1.CardCode is
>> NOT null THEN T1.U_STTYSK END
>> FROM OCRD T0 INNER JOIN
>> OITM T1 ON
>>T0.CardCode = T1.CardCode
>
>Hvis du får NULL ud er det fordi
>T1.U_STDK, T1.U_STENG eller T1.U_STTYSK
>er NULL. Det skal du bare have med i
>dine kriterier. F. eks.
>
>WHEN T0.Country = 'GB' AND
>T1.ItemCode = 'A00010' AND
>T1.CardCode is NOT
>null AND T1.U_STENG IS NOT NULL THEN T1.U_STENG
>
>Sådan. Iøvrigt ser det lidt mystisk
>ud at der står et OR i linien der
>behandler tyske koder. Er du sikker
>på at det er skruet rigtigt sammen?
>
>Løsningen med bare at plastre endnu
>et SELECT udenpå, vil jeg betegne
>som et hack. Kører man den slags på
>en MS SQL server, der er version 7
>eller tidligere, bliver
>forespørgslen markant langsommere, fordi dens
>query optimizer ikke kan klappe de
>to forespørgsler sammen.
>
>Mvh. Michael.
>
>P.s. har du været ansat i Dublyooh?

Hej Michael
Tak for hjælpen det virker nu, det er en sql2000.
Ja jeg har været ansat hos Dublyooh,(Kan godt huske dig men
er der ikke længere er ansat ved et firma i Viborg.
>--
>Which is more dangerous? TV guided
>missiles or TV guided families?
>Visit my home page at
>http://michael.zedeler.dk/
>Get my vcard at
>http://michael.zedeler.dk/vcard.vcf


Michael Zedeler (04-10-2005)
Kommentar
Fra : Michael Zedeler


Dato : 04-10-05 14:50

Kristina Beck (slet LF7MV) wrote:
> Michael Zedeler <michael@zedeler.dk> skrev:
>>P.s. har du været ansat i Dublyooh?

> Tak for hjælpen det virker nu, det er en sql2000.

Fint.

> Ja jeg har været ansat hos Dublyooh,(Kan godt huske dig men
> er der ikke længere er ansat ved et firma i Viborg.

Gud ske tak og lov. Håber det er bedre hvor du er nu. Alt hvad IW rør
ved går konkurs med store omkostninger for alle implicerede. Jeg håber
ikke du er rodet ind i det cirkus mere.

Før du poster flere ting på usenet, så læs lige denne her vejledning:

http://usenet.dk/netikette/citatteknik.html

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408179
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste