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 :

GROUP BY booléen


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Par défaut GROUP BY booléen
    Bonjour,
    J'ai une table CommandeBippage qui est composé de l'identifiant de la commande et des articles qui la composent suivi d'un champ booléen renseigné lorsque l'article est bipé par un service.

    J'aimerais obtenir une requête pour avoir les commandes non traitées (champ booléen bip à False pour tout le monde).
    Une requête pour avoir les commandes en cours (champs booléen bip à False et à True).
    Une requête pour avoir les commandes terminées (champs booléen bip à True pour tout le monde).

    Voici ma requêtes actuel qui marche mais pas de la façon que je souhaite. J'ai beau chercher je ne trouve pas comment faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT idCommande, ligne, typeCommande, COUNT(*) AS nbArticle
    FROM Commande
    WHERE bip = 0
    GROUP BY idCommande, ligne, typeCommande

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    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 136
    Par défaut
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    WITH    cmd
    AS  (	SELECT	idCommande, ligne, typeCommande
    			, 	COUNT(*) AS nbArticle
    			, 	SUM(bip) AS nbbip
    		FROM 	Commande
    		GROUP BY idCommande, ligne, typeCommande
    	)
    SELECT	idCommande, ligne, typeCommande
    	,	CASE nbbip
    			WHEN nbArticle 	THEN 'terminée'
    			WHEN 0		THEN 'non traitée'
    			ELSE	'en cours'
    		END
    FROM	cmd
    ;
    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.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Plus simple, plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *, 
           COUNT(*) OVER(PARTITION BY idCommande) AS NOMBRE_ARTICLE,
           AVG(CAST(bip AS FLOAT)) OVER(PARTITION BY idCommande) AS BIPAGE
    FROM   Commande
    BIPAGE donne 1 si toute est bipé, 0 si rien n'est bipé et une valeur quelconque entre 0 et 1 exclu s'il y a bipage partiel. Ceci vous donne aussi le taux de bipage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Par défaut
    Génial ! Merci beaucoup !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idCommande, ligne, typeCommande, COUNT(*) AS nbArticle, AVG(CAST(bip AS float)) AS avgBip
    FROM Commande
    GROUP BY idCommande, ligne, typeCommande
    J'ai plus qu'à interpréter avgBip !

    Encore merci

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

Discussions similaires

  1. [PowerShell] Ajout user dans un groupe en fonction d'un booléen
    Par PoP_NicoW dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/12/2013, 19h04
  2. [CR8] Groupes nommés par ordre spécifié
    Par PschittN dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/05/2004, 23h46
  3. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21
  4. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01

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