Bonjour,
J'ai une table avec entre autres les champs suivants IDClient (Int) et statut (NVarChar)
Et je souhaiterais faire une requête de ce style-là :
SELECT
DISTINCT(IDClient),
COUNT(statut WHERE statut='statut1'),
COUNT(statut WHERE statut='statut2'),
COUNT(statut WHERE statut='statut3')
FROM maTable
WHERE mesConditions
GROUP BY IDClient
C'est-à-dire obtenir un tableau avec 4 colonnes : 1/ IDClient, 2/ le nombre de fois où IDClient apparaît avec le statut 'statut1', 3/ le nombre de fois où IDClient apparaît avec le statut 'statut2', 4/ le nombre de fois où IDClient apparaît avec le statut 'statut3'
Ca ne me paraît pas la mort comme besoin, mais je n'arrive pas à trouver comment faire "élégamment" avec des temps d'exécution raisonnable sur une grosse table...
Le mieux que j'ai trouvé, c'est avec des fonctions, ce qui donnait quelque chose comme ça:
SELECT
DISTINCT(IDClient),
compterStatuts('statut1',IDClient,ceQuilFautPourMesConditions),
compterStatuts('statut2',IDClient,ceQuilFautPourMesConditions),
compterStatuts('statut3',IDClient,ceQuilFautPourMesConditions)
FROM maTable
WHERE mesConditions
GROUP BY IDClient
Mais ça ne marche bien que quand il n'y a pas trop de champs dans ma table : dès que je passe à une grosse-grosse table, c'est beaucoup trop lent.
Est-ce que quelqu'un pourrait m'aider ?
Merci d'avance