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

SSIS Discussion :

[SSIS][2k5] Multi Group By dans une requete SQL. [Fait]


Sujet :

SSIS

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut [SSIS][2k5] Multi Group By dans une requete SQL.
    Bonjour, je suis bloqué dans un report. Je vous explique.

    J'ai une table employé(EMPLOYEE), une table client(CUSTOMER).
    Dans la table client j'ai une propriété SalesStatusType qui va de 0 a 3.
    Chaque client correspond à un employee.

    J'aimerais faire une requète qui m'affiche un résultat comme ceci.

    EMPLOYEE | Nb Customer SalesStatusType a 2 | Nb Cust SalesStatusType 3
    emp1 32 22
    emp2 12 18


    J'ai deja cherché et en requete de base j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     COUNT(Customer.Name) AS Expr, Employee.Code
    FROM         Customer INNER JOIN
                          Rep ON Customer.ID = Rep.EntityID INNER JOIN
                          Employee ON Rep.EmployeeID = Employee.ID
    GROUP BY Employee.Code
    Celle ci m'affiche donc chaque employee avec son nombre de client correspondant. Mais il m'affiche le nombre de clients dans la meme colonne et pas dans plusieurs colonne séparé suivant le SalesStatusType du client.

    2eme question :
    Est il possible dans le code d'un report d'ecrire une fonction qui execute une requete avec un parametre passé dans la fonction. Si oui quelle serait la syntaxe?

    Merci !

  2. #2
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Une idée comme ça au saut du lit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT     Employee.Code, SUM(case when SalesStatusType=2 then 1 else 0 end) as Type2,
    SUM(case when SalesStatusType=3 then 1 else 0 end) as Type3
    FROM         Customer INNER JOIN
                          Rep ON Customer.ID = Rep.EntityID INNER JOIN
                          Employee ON Rep.EmployeeID = Employee.ID
    GROUP BY Employee.Code
    Pour ta 2e question, de quel code tu parles ? Le dataset ou la zone de code VB ?

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Merci pour ta réponse je test tout de suite ta requete !

    Pour la 2eme question je parle bien sur du code VB.

    Une fonction qui appelerai une requete qui se trouve dans un dataset peut etre ou pas.
    J'aimerais juste pouvoir passer un parametre a une fonction et pouvoir en faire ce que je veux. Y compris lui appliquer une requete. Car si cela est possible, il n'y a quasi plus de limite apres et on peux faire ce que l'on veut.

  4. #4
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    J'avoue ne pas trop m'être penché sur la question car je n'en ai jamais eu le besoin.
    Mais je pense qu'en combinant les paramètres, les dataset et les fonctions, tu peux peut être y arriver. Je vais pas beaucoup pouvoir t'aider là dessus, le VB c'est pas vraiment mon truc.

    A tout hasard, un exemple de code VB avec un paramètre venant d'une cellule de rapport :
    FAQ BI

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Ok, merci pour ta requete elle fonctionne parfaitement
    Pour le code VB, je sais deja faire une fonction avec un parametre.
    ce que j'aimerais savoir c'est si dans une fonction on peux faire une requete SQL en utilisant ce parametre.
    Merci !

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    Toujours moi avec mon problème ^^
    Donc j'aimerais en code VB faire une fonction qui appel un dataset.

    J'aurais par exemple une fonction du style.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public FUNCTION GetCA(nb as integer) AS integer
     
      USE DATASET("datasetname", nb)
     
    CARetour = resultatDataset
     
          RETURN CARetour 
     
    End FUNCTION
    Bon la syntaxe est pas bonne du tout car c'est justement mon problème.
    Est ce possible et si oui quelle est la syntaxe pour appeler un dataset et lui passer un parametre dans le code VB?

    Faut il sinon faire la requete dans le code VB sans passer par un dataset?
    Est ce possible.
    Si quelqu'un passe par la et pourrait m'orienter sa serait sympa, car je cherche sur google et j'ai toujours rien trouvé.

  7. #7
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Qu'est-ce que tu veux faire exactement ? Je vois pas bien la finalité et surtout l'utilité du code VB ?
    Détaille plus, ca permettra peut etre de te proposer d'autres pistes pour arriver au résultat souhaité.

  8. #8
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    En effet peut etre ce n'est pas la solution et peut etre que tous ce passe dans la requete. Dans ce cas Est il possible dans un select de faire une sous requete complexe? CAr en lus du nombre de lead , du nombre de new, je doit afficher le nombre de cleints démarré et la requete n'est pas aussi simple.
    Donc de la meme maniere q'un Case when, est il possible de faire une requete entiere dans le select?
    Si oui quelle serait la syntaxe?

  9. #9
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Heu j'avais que j'ai pas tout saisi à ce que tu as dit... Qu'est-ce que tu entends par requête entière ?
    Le dataset des rapports acceptent beaucoup de choses en SQL donc si ta requête tourne dans SSMS, elle devrait tourner dans le dataset.

  10. #10
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Ok, bon je crois avoir compris que c'était pas bien de vouloir faire une requete dans le code VB. Meme si je ne vois pas comment faire certains truc sans ^^

    Donc je fait mes sous requetes dans mon select mais j'ai un soucis.

    Dans une sous requete d'un select on ne peux renvoyer qu'une seule valeur.

    Ma requete suivante m'affiche plusieur resultat.
    Comment faire pour ne renvoyer que le nombre de ligne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT     MIN([Load].LoadDate) AS Expr1, LoadCustomer.Name, Rep.EmployeeID
    FROM         LoadCustomer INNER JOIN
                          [Load] ON LoadCustomer.LoadID = [Load].ID INNER JOIN
                          Customer ON LoadCustomer.CustomerID = Customer.ID INNER JOIN
                          Rep ON Customer.ID = Rep.EntityID AND Rep.EntityType = 3 AND Rep.Main = 1
    GROUP BY LoadCustomer.Name, Rep.EmployeeID
    HAVING      (MIN([Load].LoadDate) BETWEEN '2/1/2009 00:00:00' AND '2/11/2009 23:59:59')
    ORDER BY EXPR1 DESC
    Merci !

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2010, 12h10
  2. [SSIS] variable de type object dans une requete
    Par Huston dans le forum SSIS
    Réponses: 1
    Dernier message: 09/06/2010, 19h13
  3. Réponses: 2
    Dernier message: 10/12/2009, 14h34
  4. [mdx][2k5]Gestion du Today dans une requete MDX
    Par Supradine dans le forum SSAS
    Réponses: 4
    Dernier message: 10/10/2008, 08h42
  5. [SSIS][2k5] Utiliser un DataReader dans une tâche de script
    Par franculo_caoulene dans le forum SSIS
    Réponses: 2
    Dernier message: 21/02/2008, 12h58

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