IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Equivalent de LEAST et GREATEST


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut Equivalent de LEAST et GREATEST
    Bonjour,

    Je me permets de poster ce message, car après de nombreuses recherches je ne parviens pas à adapter une requête fonctionnant sous oracle a sqlserver 2005.

    Je bloque sur le remplacement des least et greatest, voici un bout de requête posant problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select matric,sum(HNUIT) from
        (select matric,sum(least(hfinpl,3000)-greatest(hdebpl,2300)) as HNUIT
    Je suis parvenu à "remplacer" la fonction least avec cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE FUNCTION Minimum
        (@Param1 Integer, @Param2 Integer)
        Returns Table As
        Return(Select Case When @Param1 < @Param2 
                           Then @Param1 Else @Param2 End MinValue)
    Utilisation => Select MinValue as PaidforPast From dbo.Minimum(@PaidThisMonth, @OwedPast)

    Le problème étant que je ne parviens pas à utiliser ma fonction dans le FROM comme je le souhaiterais, voici où j'en suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select matric,MinValue as HNUIT, 
        from plres, dbo.Minimum((select min(hfinpl) from plres),(2900));
    j'aimerais plutôt passer sur quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select matric,MinValue as HNUIT 
        from plres as p1, dbo.Minimum((select hfinpl from plres where p1.matric=matric and p1.dat=dat),(2900));
    Hors je ne parviens pas à faire fonctionner ceci avec l'alias, avez-vous une idée sur la manière de contourner le problème ?

    Merci par avance et bonne journée.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Merci pour votre réponse, je vais essayer avec ça et je vous tiens au courant.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    S'il n'y a que deux valeurs à comparer, pourqoui ne pas coder le CASE directement dans la requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select  matric
        ,   sum(HNUIT) 
    from    (   select  matric
                    ,   sum(    CASE WHEN hfinpl <= 3000 THEN hfinpl ELSE 3000 END
                            -   CASE WHEN hdebpl >= 2300 THEN hdebpl ELSE 2300 END
                            )   as HNUIT
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Merci al1, en me basant sur votre réponse j'ai réussi à finaliser ma requête en ajoutant quelques unions etc pour prendre en compte certaines conditions etc...

    Merci beaucoup et bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2002, 09h12
  2. equivalent à explode?
    Par djridou dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2002, 11h01
  3. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo