/ 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
PL/SQL - hjælp til MAX
Fra : Martin M. Pedersen


Dato : 21-08-07 11:51

Hejsa,
Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.


Flg. virker ikke, men hvordan kan det gøres ?

SELECT * FROM tickets WHERE
MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');

Mvh
Martin M. S. Pedersen

 
 
Torben Frøberg (21-08-2007)
Kommentar
Fra : Torben Frøberg


Dato : 21-08-07 19:45

Martin M. Pedersen wrote:
> Hejsa,
> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække
> de rækker, hvor den nyeste dato er mindre end en vis dato.
>
>
> Flg. virker ikke, men hvordan kan det gøres ?
>
> SELECT * FROM tickets WHERE
> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
>
> Mvh
> Martin M. S. Pedersen

Hvis det er oracle pl/sql skal du vist i stedet for max benytte
funktionen greatest.

Torben

Martin M. Pedersen (23-08-2007)
Kommentar
Fra : Martin M. Pedersen


Dato : 23-08-07 12:28

Torben Frøberg wrote:
> Martin M. Pedersen wrote:
>> Hejsa,
>> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
>> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
>>
>>
>> Flg. virker ikke, men hvordan kan det gøres ?
>>
>> SELECT * FROM tickets WHERE
>> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
>> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
>>
>> Mvh
>> Martin M. S. Pedersen
>
> Hvis det er oracle pl/sql skal du vist i stedet for max benytte
> funktionen greatest.
>
> Torben

Smart. tak.

/Martin

Michael Zedeler (21-08-2007)
Kommentar
Fra : Michael Zedeler


Dato : 21-08-07 20:25

Martin M. Pedersen wrote:
> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække
> de rækker, hvor den nyeste dato er mindre end en vis dato.
>
> Flg. virker ikke, men hvordan kan det gøres ?
>
> SELECT * FROM tickets WHERE
> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');

Så skal du bruge select-group by-having.

Prøv at kigge lidt på GROUP BY og HAVING.

Mvh. Michael.

Kristian Damm Jensen (23-08-2007)
Kommentar
Fra : Kristian Damm Jensen


Dato : 23-08-07 11:01

Michael Zedeler wrote:
> Martin M. Pedersen wrote:
>> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
>> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
>>
>> Flg. virker ikke, men hvordan kan det gøres ?
>>
>> SELECT * FROM tickets WHERE
>> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
>> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
>
> Så skal du bruge select-group by-having.
>
> Prøv at kigge lidt på GROUP BY og HAVING.

Hvordan skulle det hjælpe? Der er ingen af de indbyggede SQL-funktioner, der
understøtter maximum eller minimum eller lignende over flere kolonner. Så
skal man ud i noget propritært som fx Torbens forslag for Oracle.

--
Venlig hilsen /Best regards
Kristian Damm Jensen



Michael Zedeler (23-08-2007)
Kommentar
Fra : Michael Zedeler


Dato : 23-08-07 19:32

Kristian Damm Jensen wrote:
> Michael Zedeler wrote:
>> Martin M. Pedersen wrote:
>>> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
>>> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
>>>
>>> Flg. virker ikke, men hvordan kan det gøres ?
>>>
>>> SELECT * FROM tickets WHERE
>>> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
>>> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
>> Så skal du bruge select-group by-having.
>>
>> Prøv at kigge lidt på GROUP BY og HAVING.
>
> Hvordan skulle det hjælpe? Der er ingen af de indbyggede SQL-funktioner, der
> understøtter maximum eller minimum eller lignende over flere kolonner. Så
> skal man ud i noget propritært som fx Torbens forslag for Oracle.

Jeg har ikke læst spørgsmålet grundigt nok, så det kan ikke løses med
group by og having. Til gengæld kan man blot løse det med denne her:

SELECT *
FROM mintabel
WHERE post_1_date <= TO_DATE( [...] )
AND post_2_date <= TO_DATE( [...] )
...
AND post_5_date <= TO_DATE( [...] )

Da max(post_1_date, ..., post_5_date) <= x
<=> post_1_date <= x and ... and post_5_date <= x

Mvh. Michael.

Kristian Damm Jensen (21-08-2007)
Kommentar
Fra : Kristian Damm Jensen


Dato : 21-08-07 14:17

Martin M. Pedersen wrote:
> Hejsa,
> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
>
>
> Flg. virker ikke, men hvordan kan det gøres ?
>
> SELECT * FROM tickets WHERE
> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');

SELECT * FROM tickets WHERE
post_1_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
AND post_2_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
AND post_3_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
AND post_4_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
AND post_5_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');

--
Venlig hilsen /Best regards
Kristian Damm Jensen



Michael Zedeler (23-08-2007)
Kommentar
Fra : Michael Zedeler


Dato : 23-08-07 19:34

Martin M. Pedersen wrote:
> Hejsa,
> Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække
> de rækker, hvor den nyeste dato er mindre end en vis dato.
>
>
> Flg. virker ikke, men hvordan kan det gøres ?
>
> SELECT * FROM tickets WHERE
> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');

Noget tyder på at du ikke har normaliseret din database korrekt. Hvad
for datoer er der tale om, siden de kan sammenlignes? Bruges de til det
samme eller hvad?

Jeg har iøvrigt svaret på dit spørgsmål. Se mit svar til Kristian.

Mvh. Michael.

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

Månedens bedste
Årets bedste
Sidste års bedste