/ 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
Dato problem
Fra : Jens Gregersen


Dato : 28-12-04 21:53

Jeg har et lille problem med kalkulation i SQL (DB2)

Denne sætning

SELECT
A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0

FROM D2D A

skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2 dage.
(Værdien i dtoeshp er yymmdd .f.eks. 041201) den sum sætning jeg har skrevet
forsøgsvis fungerer ikke idet der er problemer med scalar funktionen.

SUM(A.DTOESHP + '00.02.00')

Ville være glad hvis nogen kunne hjælpe med lige at knække den nød...

På forhånd tak

Jens Gregersen



 
 
Kaj Julius (29-12-2004)
Kommentar
Fra : Kaj Julius


Dato : 29-12-04 01:22


> SELECT
> A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0
>
> FROM D2D A
>
> skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2 dage.

Hvis udgangspunktet (A.DTOESHP) er defineret som et date field, ville du
normalt bare kunne tilføje

, A.DTOESHP + 2 DAYS AS nytfeltnavn

men da du jo antyder, at A.DTOESHP er et numerisk felt, er det straks
sværere, da det først skal omdannes til et datofelt, hvilket betyder en
omvej over et alfafelt, hvor året er omdannet til et 4 cifret årstal, sådan
at det bliver til en normalt ISO dato. Derfor tilføjes 20000000 eller
19000000, afhængig af årstal (år < 30 antages at tilhøre dette årtusind).
Ydermere skal det alfanumereiske felt omdannes til formatet YYYY-MM-DD, før
konverteringen til datoformat kan gennemføres. Resultatet? se her:

CAST(SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000 ELSE
19000000 END), 1, 4) CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE WHEN
A.DTOESHP < 300000 THEN 20000000 ELSE 19000000 END), 5, 2) CONCAT '-' CONCAT
SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000 ELSE
19000000 END), 7, 2) AS DATE) + 2 DAYS AS nytfeltnavn

Som du kan se, så er det aldrig en god idé at opbevare datoer i numeriske
felter, hvis man skal arbejde videre med dem...

mvh.
Kaj








Jens Gregersen (29-12-2004)
Kommentar
Fra : Jens Gregersen


Dato : 29-12-04 19:49


"Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
news:41d1f8c1$0$180$edfadb0f@dread11.news.tele.dk...
>
>> SELECT
>> A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0
>>
>> FROM D2D A
>>
>> skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2 dage.
>
> Hvis udgangspunktet (A.DTOESHP) er defineret som et date field, ville du
> normalt bare kunne tilføje
>
> , A.DTOESHP + 2 DAYS AS nytfeltnavn
>
> men da du jo antyder, at A.DTOESHP er et numerisk felt, er det straks
> sværere, da det først skal omdannes til et datofelt, hvilket betyder en
> omvej over et alfafelt, hvor året er omdannet til et 4 cifret årstal,
> sådan at det bliver til en normalt ISO dato. Derfor tilføjes 20000000
> eller 19000000, afhængig af årstal (år < 30 antages at tilhøre dette
> årtusind). Ydermere skal det alfanumereiske felt omdannes til formatet
> YYYY-MM-DD, før konverteringen til datoformat kan gennemføres. Resultatet?
> se her:
>
> CAST(SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000
> ELSE 19000000 END), 1, 4) CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE
> WHEN A.DTOESHP < 300000 THEN 20000000 ELSE 19000000 END), 5, 2) CONCAT '-'
> CONCAT SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000
> ELSE 19000000 END), 7, 2) AS DATE) + 2 DAYS AS nytfeltnavn
>
> Som du kan se, så er det aldrig en god idé at opbevare datoer i numeriske
> felter, hvis man skal arbejde videre med dem...
>
> mvh.
> Kaj

Hej

tak for forsøget, har imellemtiden fundet at feltet dtoeshp er et
karakterfelt, gør det det nemmere? den løsning med at ændre som du beskriver
ser ud til at være for langhåret for mig at arbejde med.

Her under lidt mere fra databasen d2d:

ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0
------- ------------- ----------- ------- ------------
724 484041AP38300 KI869R 041214 D20043490054
724 484041AP80100 KI869N 041214 D20043490054

Vil være glad for at høre nærmere - arbejder selv videre med probl.

Hej fra Jens Gregersen



Kaj Julius (31-12-2004)
Kommentar
Fra : Kaj Julius


Dato : 31-12-04 02:11


"Jens Gregersen" <jensg@oncable.dk> skrev i en meddelelse
news:41d2fc38$0$206$edfadb0f@dread11.news.tele.dk...
>
> "Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
> news:41d1f8c1$0$180$edfadb0f@dread11.news.tele.dk...
>>
>>> SELECT
>>> A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0
>>>
>>> FROM D2D A
>>>
>>> skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2 dage.
>>
>> Hvis udgangspunktet (A.DTOESHP) er defineret som et date field, ville du
>> normalt bare kunne tilføje
>>
>> , A.DTOESHP + 2 DAYS AS nytfeltnavn
>>
>> men da du jo antyder, at A.DTOESHP er et numerisk felt, er det straks
>> sværere, da det først skal omdannes til et datofelt, hvilket betyder en
>> omvej over et alfafelt, hvor året er omdannet til et 4 cifret årstal,
>> sådan at det bliver til en normalt ISO dato. Derfor tilføjes 20000000
>> eller 19000000, afhængig af årstal (år < 30 antages at tilhøre dette
>> årtusind). Ydermere skal det alfanumereiske felt omdannes til formatet
>> YYYY-MM-DD, før konverteringen til datoformat kan gennemføres.
>> Resultatet? se her:
>>
>> CAST(SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000
>> ELSE 19000000 END), 1, 4) CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE
>> WHEN A.DTOESHP < 300000 THEN 20000000 ELSE 19000000 END), 5, 2) CONCAT
>> '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN
>> 20000000 ELSE 19000000 END), 7, 2) AS DATE) + 2 DAYS AS nytfeltnavn
>>
>> Som du kan se, så er det aldrig en god idé at opbevare datoer i numeriske
>> felter, hvis man skal arbejde videre med dem...
>>
>> mvh.
>> Kaj
>
> Hej
>
> tak for forsøget, har imellemtiden fundet at feltet dtoeshp er et
> karakterfelt, gør det det nemmere? den løsning med at ændre som du
> beskriver ser ud til at være for langhåret for mig at arbejde med.
>
> Her under lidt mere fra databasen d2d:
>
> ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0
> ------- ------------- ----------- ------- ------------
> 724 484041AP38300 KI869R 041214 D20043490054
> 724 484041AP80100 KI869N 041214 D20043490054
>
> Vil være glad for at høre nærmere - arbejder selv videre med probl.
>
> Hej fra Jens Gregersen
>

Hej Jens

Jo, det bliver da lidt lettere, når der er tale om et alfa-felt (en
konvertering mindre)...


Problemet med at arbejde med datoer er, at ikke alle måneder har lige mange
dage osv. Dette betyder, at det at tilføje et antal dage til en dato ikke er
så lige til endda. Man skal også tage højde for skudår mm. Derfor har de
fleste databaser mulighed for at bruge en felttype som er specielt egnet til
at repræsentere en dato. Har man først defineret et felt som en datotype,
har de fleste SQL varianter desuden et mindre arsenal af funktioner til at
beregne på disse datofelter.

DB2 er ikke anderledes. Også den skal have have data i datofelter for at
kunne beregne på dem. Du har nu et alfafelt, indeholdende en dato. Ikke
godt!! Du er nødt til at få denne dato konverteret til et "rigtigt"
datofelt. Dette kan gøres ved at "caste" det felt du har til et datofelt.
Men for at kunne gøre det, skal alfafeltet indeholde datoen i formatet
YYYY-MM-DD (også kaldet ISO formatet, fordi den er defineret af
International Standards Organisation) - altså f.eks. 2004-12-22. Desværre
indeholder dit felt kun værdien 041222 - der mangler altså oplysninger om
hvilket århundrede datoen vedrører, ligesom der skal være bindestreg mellem
årstallet, måneden og dagen.

At tilføje bindestregerne er forholdsvist enkelt, idet det kan gøres ved at
splitte værdien op i tre dele vha. SUBSTR funktionen og sætte dem sammen
igen med CONCAT operatoren, idet vi tilføjer en bindestreg:

SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
CONCAT SUBSTR(DTOESHP, 5, 2)

Resultatet af dette er en streng med formatet 04-12-22. Desværre er dette
ikke nok til at DB2 anerkender den som en datostreng. Årstallet skal være på
4 tegn. En dato kan som den viste kan teoretisk være et hvilket som helst
århundrede, f.eks. 1804-12-22. Man er derfor nødt til at vedtage en
konvention for konverteringen, f.eks. at hvis det to-cifrede årstal er
mindre end 30, ligger året i det 2100 århundrede, altså f.eks. 2004-12-22,
mens det ellers ligger i det 20. århundrede, f.eks. vil 981222 skulle
opfattes som 1998-12-22.

Datoen skal altså tilføjes enten 19 eller 20. Dette kan gøres med en CASE
sætning, hvor man tester på de første to tegn (som vi igen uddrager med
SUBSTR funktionen:

CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END

Det hele sættes nu sammen til en korrekt ISO dato streng:

CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
CONCAT SUBSTR(DTOESHP, 5, 2)

Resultatet er en streng hvor 041222 er konverteret til 2004-12-22 og 981222
er konverteret til 1998-12-22

Se det er jo fint nok, men for at kunne arbejde med denne datostreng, skal
den omdannes til et rigtig dato format. Dette gøres med en CAST funktion:

CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE)

Vi har nu en rigtig datovariabel, som vi kan arbejde videre med, f.eks.
addere 2 dage til værdien:

CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE) + 2 DAYS

I eksemplet hvor DTOESHP indeholdt værdien 041222, vil værdien af
ovenstående nu være 2004-12-24. Variablen vil desuden være et rigtigt
datofelt, som vil kunne formateres iht. normale regler for præsentation af
datoer. Det er derfor muligt, at du vil se datoen præsenteret som 24.12.2004
(alm. europæisk format). Men det er kun en præsentation. Den interne
datarepræsentation kan være en hel anden.

Du skriver ikke noget om, hvad du skal bruge værdien til. Skal du have den
tilbage til det oprindelige format igen (YYMMDD)? For så forestår der endnu
en konvertering. Hvis du på nogen måde kan undgå det, så lad være. Datoer
bør gemmes i dato-felter!

mvh.
Kaj




Jens Gregersen (12-01-2005)
Kommentar
Fra : Jens Gregersen


Dato : 12-01-05 21:59


"Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
news:41d4a7a8$0$169$edfadb0f@dread11.news.tele.dk...
>
> "Jens Gregersen" <jensg@oncable.dk> skrev i en meddelelse
> news:41d2fc38$0$206$edfadb0f@dread11.news.tele.dk...
>>
>> "Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
>> news:41d1f8c1$0$180$edfadb0f@dread11.news.tele.dk...
>>>
>>>> SELECT
>>>> A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0
>>>>
>>>> FROM D2D A
>>>>
>>>> skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2
>>>> dage.
>>>
>>> Hvis udgangspunktet (A.DTOESHP) er defineret som et date field, ville du
>>> normalt bare kunne tilføje
>>>
>>> , A.DTOESHP + 2 DAYS AS nytfeltnavn
>>>
>>> men da du jo antyder, at A.DTOESHP er et numerisk felt, er det straks
>>> sværere, da det først skal omdannes til et datofelt, hvilket betyder en
>>> omvej over et alfafelt, hvor året er omdannet til et 4 cifret årstal,
>>> sådan at det bliver til en normalt ISO dato. Derfor tilføjes 20000000
>>> eller 19000000, afhængig af årstal (år < 30 antages at tilhøre dette
>>> årtusind). Ydermere skal det alfanumereiske felt omdannes til formatet
>>> YYYY-MM-DD, før konverteringen til datoformat kan gennemføres.
>>> Resultatet? se her:
>>>
>>> CAST(SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000
>>> ELSE 19000000 END), 1, 4) CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE
>>> WHEN A.DTOESHP < 300000 THEN 20000000 ELSE 19000000 END), 5, 2) CONCAT
>>> '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN
>>> 20000000 ELSE 19000000 END), 7, 2) AS DATE) + 2 DAYS AS nytfeltnavn
>>>
>>> Som du kan se, så er det aldrig en god idé at opbevare datoer i
>>> numeriske felter, hvis man skal arbejde videre med dem...
>>>
>>> mvh.
>>> Kaj
>>
>> Hej
>>
>> tak for forsøget, har imellemtiden fundet at feltet dtoeshp er et
>> karakterfelt, gør det det nemmere? den løsning med at ændre som du
>> beskriver ser ud til at være for langhåret for mig at arbejde med.
>>
>> Her under lidt mere fra databasen d2d:
>>
>> ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0
>> ------- ------------- ----------- ------- ------------
>> 724 484041AP38300 KI869R 041214 D20043490054
>> 724 484041AP80100 KI869N 041214 D20043490054
>>
>> Vil være glad for at høre nærmere - arbejder selv videre med probl.
>>
>> Hej fra Jens Gregersen
>>
>
> Hej Jens
>
> Jo, det bliver da lidt lettere, når der er tale om et alfa-felt (en
> konvertering mindre)...
>
>
> Problemet med at arbejde med datoer er, at ikke alle måneder har lige
> mange dage osv. Dette betyder, at det at tilføje et antal dage til en dato
> ikke er så lige til endda. Man skal også tage højde for skudår mm. Derfor
> har de fleste databaser mulighed for at bruge en felttype som er specielt
> egnet til at repræsentere en dato. Har man først defineret et felt som en
> datotype, har de fleste SQL varianter desuden et mindre arsenal af
> funktioner til at beregne på disse datofelter.
>
> DB2 er ikke anderledes. Også den skal have have data i datofelter for at
> kunne beregne på dem. Du har nu et alfafelt, indeholdende en dato. Ikke
> godt!! Du er nødt til at få denne dato konverteret til et "rigtigt"
> datofelt. Dette kan gøres ved at "caste" det felt du har til et datofelt.
> Men for at kunne gøre det, skal alfafeltet indeholde datoen i formatet
> YYYY-MM-DD (også kaldet ISO formatet, fordi den er defineret af
> International Standards Organisation) - altså f.eks. 2004-12-22. Desværre
> indeholder dit felt kun værdien 041222 - der mangler altså oplysninger om
> hvilket århundrede datoen vedrører, ligesom der skal være bindestreg
> mellem årstallet, måneden og dagen.
>
> At tilføje bindestregerne er forholdsvist enkelt, idet det kan gøres ved
> at splitte værdien op i tre dele vha. SUBSTR funktionen og sætte dem
> sammen igen med CONCAT operatoren, idet vi tilføjer en bindestreg:
>
> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
> CONCAT SUBSTR(DTOESHP, 5, 2)
>
> Resultatet af dette er en streng med formatet 04-12-22. Desværre er dette
> ikke nok til at DB2 anerkender den som en datostreng. Årstallet skal være
> på 4 tegn. En dato kan som den viste kan teoretisk være et hvilket som
> helst århundrede, f.eks. 1804-12-22. Man er derfor nødt til at vedtage en
> konvention for konverteringen, f.eks. at hvis det to-cifrede årstal er
> mindre end 30, ligger året i det 2100 århundrede, altså f.eks. 2004-12-22,
> mens det ellers ligger i det 20. århundrede, f.eks. vil 981222 skulle
> opfattes som 1998-12-22.
>
> Datoen skal altså tilføjes enten 19 eller 20. Dette kan gøres med en CASE
> sætning, hvor man tester på de første to tegn (som vi igen uddrager med
> SUBSTR funktionen:
>
> CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END
>
> Det hele sættes nu sammen til en korrekt ISO dato streng:
>
> CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
> CONCAT SUBSTR(DTOESHP, 5, 2)
>
> Resultatet er en streng hvor 041222 er konverteret til 2004-12-22 og
> 981222 er konverteret til 1998-12-22
>
> Se det er jo fint nok, men for at kunne arbejde med denne datostreng, skal
> den omdannes til et rigtig dato format. Dette gøres med en CAST funktion:
>
> CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
> CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE)
>
> Vi har nu en rigtig datovariabel, som vi kan arbejde videre med, f.eks.
> addere 2 dage til værdien:
>
> CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
> CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE) + 2 DAYS
>
> I eksemplet hvor DTOESHP indeholdt værdien 041222, vil værdien af
> ovenstående nu være 2004-12-24. Variablen vil desuden være et rigtigt
> datofelt, som vil kunne formateres iht. normale regler for præsentation af
> datoer. Det er derfor muligt, at du vil se datoen præsenteret som
> 24.12.2004 (alm. europæisk format). Men det er kun en præsentation. Den
> interne datarepræsentation kan være en hel anden.
>
> Du skriver ikke noget om, hvad du skal bruge værdien til. Skal du have den
> tilbage til det oprindelige format igen (YYMMDD)? For så forestår der
> endnu en konvertering. Hvis du på nogen måde kan undgå det, så lad være.
> Datoer bør gemmes i dato-felter!
>
> mvh.
> Kaj

Hej Kaj - har været væk lidt fra problemet - men har nu prøvet det - og
voila det virker perfekt!!

SELECT DISTINCT A.ITOISSC, D.ICSECNO, G.IIIION0,
A.DTOESHP, A.IIIIBV0,
CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE) + 2 DAYS AS SHIP_ETA_DATE


FROM tabel A
, tabel B
, tabel C
osv - og herunder rapporten- eller lidt af den:


SHIP
ETA
ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0 DATE
------- ------------- ----------- ------- ------------ ----------
706 94KFRV1602401 AS9994 041227 EU14392 2004-12-29
706 94KFRV1602501 AS9998 041227 EU14392 2004-12-29
706 FQ4FRV1862401 KI773E 041229 EU14419 2004-12-31

- jeg glemte at skrive omkring årstal - der kan kun forekomme 2004 eller
2005 data, men din løsning med case funktionen er smuk.

Alt i alt har du hjulpet mig med en perfekt løsning på problemet - jeg
arbejder professionelt med sql og logistik, opgaven er at forsendelsesdata
inkl shipdate (dtoeshp) skal tillægges en transittid, på f.eks. 2 dage for
at komme frem til en eta date - så din løsning ser jo rigtig fornuftig ud.
Når jeg afleverer opgaven vil jeg især fremhæve den smukke og 'enkle'
løsning på et reelt dato/sql problem.

***
Præmis: rapporten gemmes i en tabel - kaldet test, og man programmerer en
query ud fra en samkørsel med en kalendertabel for at finde ud af hvilken
ugedag forsendelsen lander - kan man da bruge case funktionen til en logik
hvor man siger at dagtype 6 = lørdag, dagtype 7=søndag og dagtype
8=hellidag, hvis dagtype er 1-5 skal feltet bare være blank - så brugerne
kan tage højde for dette i deres videre planlægning - eks. sådan?:
(nedenstående virker kke)

SELECT A.*, B.DAYTYPE AS WEEKDAY

FROM TEST A,CALENDER B

CASE WHEN B.DAYTYPE = '6' THEN 'SATURDAY' ELSE ' ',
CASE WHEN B.DAYTYPE = '7' THEN 'SUNDAY' ELSE ' ',
CASE WHEN B.DAYTYPE = '8' THEN 'HOLIDAY' ELSE ' ',

WHERE A.SHIP_ETA_DATE = b.caldate

Håber du kan svare på det - eller en anden i gruppen - på forhånd tak

Jens Gregersen - jensg@hej.oncable.dk (hej slettes fra mailadressen inden
afsendelse) )






Kaj Julius (14-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 14-01-05 21:35


"Jens Gregersen" <jensg@oncable.dk> skrev i en meddelelse
news:41e58fb0$0$310$edfadb0f@dread11.news.tele.dk...
>
> "Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
> news:41d4a7a8$0$169$edfadb0f@dread11.news.tele.dk...
>>
>> "Jens Gregersen" <jensg@oncable.dk> skrev i en meddelelse
>> news:41d2fc38$0$206$edfadb0f@dread11.news.tele.dk...
>>>
>>> "Kaj Julius" <julius.x@lindbjergparken.nospm.dk> skrev i en meddelelse
>>> news:41d1f8c1$0$180$edfadb0f@dread11.news.tele.dk...
>>>>
>>>>> SELECT
>>>>> A.ITOISSC,A.ICSECNO,A.IIIION0,A.DTOESHP,A.IIIIBV0
>>>>>
>>>>> FROM D2D A
>>>>>
>>>>> skal forøges med 1 kolonne, der er lig med værdien i a.dtoeshp + 2
>>>>> dage.
>>>>
>>>> Hvis udgangspunktet (A.DTOESHP) er defineret som et date field, ville
>>>> du normalt bare kunne tilføje
>>>>
>>>> , A.DTOESHP + 2 DAYS AS nytfeltnavn
>>>>
>>>> men da du jo antyder, at A.DTOESHP er et numerisk felt, er det straks
>>>> sværere, da det først skal omdannes til et datofelt, hvilket betyder en
>>>> omvej over et alfafelt, hvor året er omdannet til et 4 cifret årstal,
>>>> sådan at det bliver til en normalt ISO dato. Derfor tilføjes 20000000
>>>> eller 19000000, afhængig af årstal (år < 30 antages at tilhøre dette
>>>> årtusind). Ydermere skal det alfanumereiske felt omdannes til formatet
>>>> YYYY-MM-DD, før konverteringen til datoformat kan gennemføres.
>>>> Resultatet? se her:
>>>>
>>>> CAST(SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000 THEN 20000000
>>>> ELSE 19000000 END), 1, 4) CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP +
>>>> CASE WHEN A.DTOESHP < 300000 THEN 20000000 ELSE 19000000 END), 5, 2)
>>>> CONCAT '-' CONCAT SUBSTR(CHAR(A.DTOESHP + CASE WHEN A.DTOESHP < 300000
>>>> THEN 20000000 ELSE 19000000 END), 7, 2) AS DATE) + 2 DAYS AS
>>>> nytfeltnavn
>>>>
>>>> Som du kan se, så er det aldrig en god idé at opbevare datoer i
>>>> numeriske felter, hvis man skal arbejde videre med dem...
>>>>
>>>> mvh.
>>>> Kaj
>>>
>>> Hej
>>>
>>> tak for forsøget, har imellemtiden fundet at feltet dtoeshp er et
>>> karakterfelt, gør det det nemmere? den løsning med at ændre som du
>>> beskriver ser ud til at være for langhåret for mig at arbejde med.
>>>
>>> Her under lidt mere fra databasen d2d:
>>>
>>> ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0
>>> ------- ------------- ----------- ------- ------------
>>> 724 484041AP38300 KI869R 041214 D20043490054
>>> 724 484041AP80100 KI869N 041214 D20043490054
>>>
>>> Vil være glad for at høre nærmere - arbejder selv videre med probl.
>>>
>>> Hej fra Jens Gregersen
>>>
>>
>> Hej Jens
>>
>> Jo, det bliver da lidt lettere, når der er tale om et alfa-felt (en
>> konvertering mindre)...
>>
>>
>> Problemet med at arbejde med datoer er, at ikke alle måneder har lige
>> mange dage osv. Dette betyder, at det at tilføje et antal dage til en
>> dato ikke er så lige til endda. Man skal også tage højde for skudår mm.
>> Derfor har de fleste databaser mulighed for at bruge en felttype som er
>> specielt egnet til at repræsentere en dato. Har man først defineret et
>> felt som en datotype, har de fleste SQL varianter desuden et mindre
>> arsenal af funktioner til at beregne på disse datofelter.
>>
>> DB2 er ikke anderledes. Også den skal have have data i datofelter for at
>> kunne beregne på dem. Du har nu et alfafelt, indeholdende en dato. Ikke
>> godt!! Du er nødt til at få denne dato konverteret til et "rigtigt"
>> datofelt. Dette kan gøres ved at "caste" det felt du har til et datofelt.
>> Men for at kunne gøre det, skal alfafeltet indeholde datoen i formatet
>> YYYY-MM-DD (også kaldet ISO formatet, fordi den er defineret af
>> International Standards Organisation) - altså f.eks. 2004-12-22. Desværre
>> indeholder dit felt kun værdien 041222 - der mangler altså oplysninger om
>> hvilket århundrede datoen vedrører, ligesom der skal være bindestreg
>> mellem årstallet, måneden og dagen.
>>
>> At tilføje bindestregerne er forholdsvist enkelt, idet det kan gøres ved
>> at splitte værdien op i tre dele vha. SUBSTR funktionen og sætte dem
>> sammen igen med CONCAT operatoren, idet vi tilføjer en bindestreg:
>>
>> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
>> CONCAT SUBSTR(DTOESHP, 5, 2)
>>
>> Resultatet af dette er en streng med formatet 04-12-22. Desværre er dette
>> ikke nok til at DB2 anerkender den som en datostreng. Årstallet skal være
>> på 4 tegn. En dato kan som den viste kan teoretisk være et hvilket som
>> helst århundrede, f.eks. 1804-12-22. Man er derfor nødt til at vedtage en
>> konvention for konverteringen, f.eks. at hvis det to-cifrede årstal er
>> mindre end 30, ligger året i det 2100 århundrede, altså f.eks.
>> 2004-12-22, mens det ellers ligger i det 20. århundrede, f.eks. vil
>> 981222 skulle opfattes som 1998-12-22.
>>
>> Datoen skal altså tilføjes enten 19 eller 20. Dette kan gøres med en CASE
>> sætning, hvor man tester på de første to tegn (som vi igen uddrager med
>> SUBSTR funktionen:
>>
>> CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END
>>
>> Det hele sættes nu sammen til en korrekt ISO dato streng:
>>
>> CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
>> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
>> CONCAT SUBSTR(DTOESHP, 5, 2)
>>
>> Resultatet er en streng hvor 041222 er konverteret til 2004-12-22 og
>> 981222 er konverteret til 1998-12-22
>>
>> Se det er jo fint nok, men for at kunne arbejde med denne datostreng,
>> skal den omdannes til et rigtig dato format. Dette gøres med en CAST
>> funktion:
>>
>> CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END
>> CONCAT SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2)
>> CONCAT '-' CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE)
>>
>> Vi har nu en rigtig datovariabel, som vi kan arbejde videre med, f.eks.
>> addere 2 dage til værdien:
>>
>> CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END
>> CONCAT SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2)
>> CONCAT '-' CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE) + 2 DAYS
>>
>> I eksemplet hvor DTOESHP indeholdt værdien 041222, vil værdien af
>> ovenstående nu være 2004-12-24. Variablen vil desuden være et rigtigt
>> datofelt, som vil kunne formateres iht. normale regler for præsentation
>> af datoer. Det er derfor muligt, at du vil se datoen præsenteret som
>> 24.12.2004 (alm. europæisk format). Men det er kun en præsentation. Den
>> interne datarepræsentation kan være en hel anden.
>>
>> Du skriver ikke noget om, hvad du skal bruge værdien til. Skal du have
>> den tilbage til det oprindelige format igen (YYMMDD)? For så forestår der
>> endnu en konvertering. Hvis du på nogen måde kan undgå det, så lad være.
>> Datoer bør gemmes i dato-felter!
>>
>> mvh.
>> Kaj
>
> Hej Kaj - har været væk lidt fra problemet - men har nu prøvet det - og
> voila det virker perfekt!!
>
> SELECT DISTINCT A.ITOISSC, D.ICSECNO, G.IIIION0,
> A.DTOESHP, A.IIIIBV0,
> CAST(CASE WHEN SUBSTR(DTOESHP, 1, 2) < '30' THEN '20' ELSE '19' END CONCAT
> SUBSTR(DTOESHP, 1, 2) CONCAT '-' CONCAT SUBSTR(DTOESHP, 3, 2) CONCAT '-'
> CONCAT SUBSTR(DTOESHP, 5, 2) AS DATE) + 2 DAYS AS SHIP_ETA_DATE
>
>
> FROM tabel A
> , tabel B
> , tabel C
> osv - og herunder rapporten- eller lidt af den:
>
>
> SHIP
> ETA
> ITOISSC ICSECNO IIIION0 DTOESHP IIIIBV0 DATE
> ------- ------------- ----------- ------- ------------ ----------
> 706 94KFRV1602401 AS9994 041227 EU14392 2004-12-29
> 706 94KFRV1602501 AS9998 041227 EU14392 2004-12-29
> 706 FQ4FRV1862401 KI773E 041229 EU14419 2004-12-31
>
> - jeg glemte at skrive omkring årstal - der kan kun forekomme 2004 eller
> 2005 data, men din løsning med case funktionen er smuk.
>
> Alt i alt har du hjulpet mig med en perfekt løsning på problemet - jeg
> arbejder professionelt med sql og logistik, opgaven er at forsendelsesdata
> inkl shipdate (dtoeshp) skal tillægges en transittid, på f.eks. 2 dage for
> at komme frem til en eta date - så din løsning ser jo rigtig fornuftig ud.
> Når jeg afleverer opgaven vil jeg især fremhæve den smukke og 'enkle'
> løsning på et reelt dato/sql problem.
>
> ***
> Præmis: rapporten gemmes i en tabel - kaldet test, og man programmerer en
> query ud fra en samkørsel med en kalendertabel for at finde ud af hvilken
> ugedag forsendelsen lander - kan man da bruge case funktionen til en logik
> hvor man siger at dagtype 6 = lørdag, dagtype 7=søndag og dagtype
> 8=hellidag, hvis dagtype er 1-5 skal feltet bare være blank - så brugerne
> kan tage højde for dette i deres videre planlægning - eks. sådan?:
> (nedenstående virker kke)
>
> SELECT A.*, B.DAYTYPE AS WEEKDAY
>
> FROM TEST A,CALENDER B
>
> CASE WHEN B.DAYTYPE = '6' THEN 'SATURDAY' ELSE ' ',
> CASE WHEN B.DAYTYPE = '7' THEN 'SUNDAY' ELSE ' ',
> CASE WHEN B.DAYTYPE = '8' THEN 'HOLIDAY' ELSE ' ',
>
> WHERE A.SHIP_ETA_DATE = b.caldate
>
> Håber du kan svare på det - eller en anden i gruppen - på forhånd tak
>
> Jens Gregersen - jensg@hej.oncable.dk (hej slettes fra mailadressen inden
> afsendelse) )
>


Hej Jens

Nej, faktisk er det meget enklere:

SELECT A*, CASE B.DAYTYPE WHEN '6' THEN 'SATURDAY' WHEN ''7' THEN 'SUNDAY'
WHEN '8' THEN 'HOLIDAY' ELSE NULL END
FROM TEST A, CALENDER B
WHERE A.SHIP_ETA_DATE = b.caldate

Hvis du hellere vil have en blank en en null værdi, så erstat NULL med ' '

Som du kan se er CASE en rigtig god konstruktion, som kan lette ens arbejde
meget.

Btw.: CASE har faktisk to former. Jeg kunne også have valgt formen:

CASE WHEN B.DAYTYPE = '6' THEN 'SATURDAY' WHEN B.DAYTYPE = '7' THEN 'SUNDAY'
WHEN B.DAYTYPE = '8' THEN 'HOLIDAY' ELSE NULL END

Begge former er rigtigt gode, men da det er det samme felt man spørger til
hele tiden, foretrækker jeg den første form. I andre tilfælde, hvor det kan
være forskellige ting man eller felter man spørger til eller man ikke kan
nøjes med at spørge til en værdi, men skal bruge en formel, er den sidste
form bedre.

Derfor hedder den første form også "simple-when-clause", mens den mere
avancerede version hedder "searched-when-clause".

Håber du kan bruge det (og at jeg ikke lyder for nørdet og forelæsende)...

/ Kaj



Jens Gregersen (18-01-2005)
Kommentar
Fra : Jens Gregersen


Dato : 18-01-05 21:26



<KLIP>
> Som du kan se er CASE en rigtig god konstruktion, som kan lette ens
> arbejde meget.

Hej Kaj - det virkede perfekt - jeg kan se at CASE funktionen er værd at
kende til - hvor kan man lære/læse mere om den? det er lisson man arbejder
med sql dag ud og dag ind - og rammer hovedet mod loftet
programmeringsmæssigt, og så engang imellem kommer der en åbenbaring og man
rykker lidt mere og kan tilføje nogle ting i sin programmeringsstil - men
mange gange i hælene på brugernes behov...right?

> Btw.: CASE har faktisk to former. Jeg kunne også have valgt formen:
>
> CASE WHEN B.DAYTYPE = '6' THEN 'SATURDAY' WHEN B.DAYTYPE = '7' THEN
> 'SUNDAY' WHEN B.DAYTYPE = '8' THEN 'HOLIDAY' ELSE NULL END

Det var denne jeg brugte...

> Begge former er rigtigt gode, men da det er det samme felt man spørger til
> hele tiden, foretrækker jeg den første form. I andre tilfælde, hvor det
> kan være forskellige ting man eller felter man spørger til eller man ikke
> kan nøjes med at spørge til en værdi, men skal bruge en formel, er den
> sidste form bedre.
>
> Derfor hedder den første form også "simple-when-clause", mens den mere
> avancerede version hedder "searched-when-clause".
>
> Håber du kan bruge det (og at jeg ikke lyder for nørdet og forelæsende)...
>
> / Kaj

Som sagt - tak igen - man kan vel ikke blive for klog så belærende oplever
jeg ikke dine kommentarer som, snarere tværtimod...Hyg dig..

venlig hilsen - Jens ..jensg@hej.oncable.dk



Kaj Julius (21-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 21-01-05 22:27

> Hej Kaj - det virkede perfekt - jeg kan se at CASE funktionen er værd at
> kende til - hvor kan man lære/læse mere om den?

Tja, jeg støver som regel manualerne igennem, og kigger på eksemplerne i
dem, når jeg støder på et problem som jeg ikke lige kan løse. Jeg arbejder
på en iSeries installation, så jeg kigger mest i manualerne til DB2 UDB for
iSeries

http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2926/index.htm,

men også de andre DB2 manualer og en hel masse andre herligheder ligger på
IBMs DB2 site www.ibm.com/db2

Rent programmerings- og funktionsmæssigt er der ikke længere den store
forskel på de forskellige versioner af DB2 UDB på de understøttede platforme
(ref: http://www-1.ibm.com/servers/enable/site/db2/db2common.html). Vi burde
derfor have nogenlunde de samme muligheder, selv hvis du skulle arbejde på
en LUW (Linux/Unix/Windows) eller z/OS (mainframe) installation.
Administration og management er naturligvis noget helt andet. Her er der
stadig store forskelle.

Mht. CASE, så er den bl.a. beskrevet her:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2926/info/db2/rbafzmstdatetimearith.htm#caseexp

http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2926/info/db2/rbafzmstcasestmt.htm#casestmt

Jeg har personligt haft overordentlig stor brug for CASE til at udarbejde
diverse statistikker. Vi har f.eks. en fil, hvor vi logger alle varesalg,
med oplysningerne kundenr, varenr, antal, pris og dato. Når f.eks. der på et
tidspunkt skal udarbejdes en salgsstatistik, hvor salget skal opgøres
kvartalsvis, helst i sideordnede kolonner, ja så kan man jo bare fyre sådan
en forespørgsel af:

SELECT s.varenr, v.varetekst, SUM(CASE WHEN MONTH(s.dato) < 4 THEN s.antal
ELSE 0 END) AS k1antal, SUM(CASE WHEN MONTH(s.dato) < 4 THEN s.antal *
s.pris ELSE 0 END) AS k1bel , SUM(CASE WHEN MONTH(s.dato) < 4 THEN 1 ELSE 0
END) AS k1linier, SUM(CASE WHEN MONTH(s.dato) BETWEEN 4 AND 6 THEN s.antal
ELSE 0 END) AS k2antal, SUM(CASE WHEN MONTH(s.dato) BETWEEN 4 AND 6 THEN
s.antal * s.pris ELSE 0 END) AS k2bel, SUM(CASE WHEN MONTH(s.dato) BETWEEN 4
AND 6 THEN 1 ELSE 0 END) AS k2linier, SUM(CASE WHEN MONTH(s.dato) BETWEEN 7
AND 9 THEN s.antal ELSE 0 END) AS k3antal, SUM(CASE WHEN MONTH(s.dato)
BETWEEN 7 AND 9 THEN s.antal * s.pris ELSE 0 END) AS k3bel, SUM(CASE WHEN
MONTH(s.dato) BETWEEN 7 AND 9 THEN 1 ELSE 0 END) AS k3linier, SUM(CASE WHEN
MONTH(s.dato) > 9 THEN s.antal ELSE 0 END) AS k4antal, SUM(CASE WHEN
MONTH(s.dato) > 9 THEN s.antal * s.pris ELSE 0 END) AS k4bel, SUM(CASE WHEN
MONTH(s.dato) > 9 THEN 1 ELSE 0 END) AS k4linier
FROM salgslog AS s, varebeskrivelse AS v
WHERE s.varenr = v.varenr
AND s.kundenr = 10
GROUP BY s.varenr, v.varetekst
ORDER BY v.varetekst

Fyr den fyr af i en import forespørgsel i et Excel regneark, hvor ODBC er
sat korrekt op, og alle er glade.

Det er egentlig basisviden, men alligevel varede det lidt inden jeg fattede,
at at man kunne gøre det så let med en enkelt forespørgsel. Jeg havde først
ekperimenteret med at selektere de enkelte kvartaler for sig og så CROSS
joine dem. Det her er meget lettere.

Sådan er der så meget, når man som jeg er relativ nybegynder og autodidakt
inden for området.


>det er lisson man arbejder med sql dag ud og dag ind - og rammer hovedet
>mod loftet programmeringsmæssigt, og så engang imellem kommer der en
>åbenbaring og man rykker lidt mere og kan tilføje nogle ting i sin
>programmeringsstil - men mange gange i hælene på brugernes behov...right?

Exactly right! Der er aldrig rigtig tid til bare at eksperimentere lidt for
at finde den bedste metode, så ofte halter man efter og gør tingene på en
måde som er mindre optimale. Bare tingene bliver gjort...

>
> Som sagt - tak igen - man kan vel ikke blive for klog så belærende oplever
> jeg ikke dine kommentarer som, snarere tværtimod...Hyg dig..
>

I lige måde...

/Kaj



Jens Gregersen (25-01-2005)
Kommentar
Fra : Jens Gregersen


Dato : 25-01-05 21:12


<KLIP>
> men også de andre DB2 manualer og en hel masse andre herligheder ligger på
> IBMs DB2 site www.ibm.com/db2

Ja - arbejder selv med disse manualer - der er meget godt at hente

> Rent programmerings- og funktionsmæssigt er der ikke længere den store
> forskel på de forskellige versioner af DB2 UDB på de understøttede
> platforme (ref:
> http://www-1.ibm.com/servers/enable/site/db2/db2common.html). Vi burde
> derfor have nogenlunde de samme muligheder, selv hvis du skulle arbejde på
> en LUW (Linux/Unix/Windows) eller z/OS (mainframe) installation.
> Administration og management er naturligvis noget helt andet. Her er der
> stadig store forskelle.

Jeg arbejder på et host miljø med 390 system - af sikkerhedshensyn desværre
uden mulighed for at connecte mellem
systemerne.

<KLIP>

tjaaee hvad skal man sige - dit program ser godtnok noget blæret ud - men
den virker og der ligger sikkert mange tankeprocesser
bag - såeeeehhh - RESPECT - er vel det rette ord.

<KLIP>
Så - mon ikke vi er ved at være til ende med den her tråd - vender tilbage
når jeg har nogle nye nødder at knække...

Hyg dig..
Jens Gregersen



Jens Gyldenkærne Cla~ (15-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-01-05 00:13

Kaj Julius skrev:

> Håber du kan bruge det (og at jeg ikke lyder for nørdet og
> forelæsende)...

Hej Kaj. Kan du lokkes til at klippe i dine citater. Det foregående
indlæg var på næsten 250 linjer, hvor kun en lille del af dem var
din nye tekst.

Dine ellers udmærkede forklaringer bliver svære at finde når man
skal bladre flere siders citater igennem først.
--
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

Kaj Julius (15-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 15-01-05 23:58

> Hej Kaj. Kan du lokkes til at klippe i dine citater. Det foregående
> indlæg var på næsten 250 linjer, hvor kun en lille del af dem var
> din nye tekst.
>

Hej Jens

Jeg er (og var, beklageligvis) klar over, at man iflg. netiketten bør fjerne
unødig tekst fra tidligere i udvekslingen. Så jeg kan ikke engang påberåbe
mig uvidenhed.

Mit eneste forsvar er således glemsomhed og gammel vane fra besvarelse af
alm. mails, hvor det kan være svært at følge "tråden" i korrespondencen hvis
man sletter tidligere udgydelser.

Dette gælder naturligvis ikke i nyhedsgrupper, så derfor sender jeg hermed
min mest ydmyge undskyldning til dig og alle andre, som jeg har tirret og
irriteret.

Jeg vil fremover bestræbe mig på, efter bedste evne og formåen, at begrænse
mine indlæg i henhold til de for gruppen gældende regler.

Langt fra alle grupper har så strikse regler (og heller ikke så årvågne
vogtere *S*), men jeg accepterer og respekterer fuldt ud, at reglerne
fremmer læsevenligheden. Det er derfor ikke af princip, at jeg har
negligeret "god tone".

Båndbredde argumentet finder jeg derimod irrelevant. Dengang vi brugte et
2400 bps modem, var det naturligvis anderledes, men med dagens
opkoblingshastigheder er selv en alenlang tekst overført på en brøkdel af et
sekund.


Med venlig hilsen
Kaj Julius




> Dine ellers udmærkede forklaringer bliver svære at finde når man
> skal bladre flere siders citater igennem først.
> --



Martin Christensen (15-01-2005)
Kommentar
Fra : Martin Christensen


Dato : 15-01-05 01:00

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[Snip ubeskåret diskussion mellem Kaj Julius og Jens Gregersen]

Kunne d'herrer ikke overtales til at beskære deres indlæg, så der kun
bliver bevaret nok af det forrige indlæg til at placere svaret i den
rette kontekst? De, der er interesserede i at læse tråden i sin
helhed, kan jo nok finde den på deres lokale nyhedsserver eller
Google.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkHoXQwACgkQYu1fMmOQldVTDACbBf64MGDGxBikdykqqZV0BoBJ
A4AAoKqzuca7QOEZLbWfrF6V+UDS4jig
=Efz7
-----END PGP SIGNATURE-----

Kaj Julius (16-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 16-01-05 00:01

> Kunne d'herrer ikke overtales til at beskære deres indlæg, så der kun
> bliver bevaret nok af det forrige indlæg til at placere svaret i den
> rette kontekst? De, der er interesserede i at læse tråden i sin
> helhed, kan jo nok finde den på deres lokale nyhedsserver eller
> Google.
>
> Martin
>

Hej Martin

Beklager! Se evt. mit svarindlæg til Jens, som har lignende indvendinger.

/ Kaj



Jens Gregersen (17-01-2005)
Kommentar
Fra : Jens Gregersen


Dato : 17-01-05 21:32


"Martin Christensen" <martin.sand.christensen@gmail.com> skrev i en
meddelelse news:871xcnsgs2.fsf@gmail.com...
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> [Snip ubeskåret diskussion mellem Kaj Julius og Jens Gregersen]
>
> Kunne d'herrer ikke overtales til at beskære deres indlæg, så der kun
> bliver bevaret nok af det forrige indlæg til at placere svaret i den
> rette kontekst? De, der er interesserede i at læse tråden i sin
> helhed, kan jo nok finde den på deres lokale nyhedsserver eller
> Google.
>
> Martin
Hej - jeg beklager at jeg har brugt så mange linier - og glemt at editere
før mit svar, mit forsvar - at jeg er forholdsvis ny i gruppesnak - det skal
ikke gentage sig - jeg har efterfølgende terpet netetikette - så nu er det
sevet ind...

Jeg værdsætter den hjælp jeg har og fortsat kan få via denne gruppe - hilsen
til alle jer 'sql kodekaale' derude...

Jens Gregersen



Jens Gyldenkærne Cla~ (16-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-01-05 00:27

Kaj Julius skrev:

> Jeg vil fremover bestræbe mig på, efter bedste evne og
> formåen, at begrænse mine indlæg i henhold til de for gruppen
> gældende regler.

Jeg takker.


> Båndbredde argumentet finder jeg derimod irrelevant.

Det forstår jeg godt - men det argument blev vist heller ikke brugt
her.
--
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

Kaj Julius (18-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 18-01-05 00:22

>> Båndbredde argumentet finder jeg derimod irrelevant.
>
> Det forstår jeg godt - men det argument blev vist heller ikke brugt
> her.
> --

Njaj - måske ikke direkte, men indirekte gjorde det jo, da det var første
punkt på "netikette" siden. Første punkt plejer jo at være det vigtigste,
men som sagt - i dagens Danmark? Måske trænger siden til en reorganisering
af argumenterne?

/ Kaj

> 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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste