Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma
requête d'analyse croisée doit se contruire dynamiquement en fonction des
enregistrements contenus dans cette table A.
J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant mais
dans ce cas, les colonnes sont codées en dur dans la requête :
SELECT ImageID,
MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as
Line0001,
MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as
Line0002,
MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as
Line0003,
MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as
Line0004,
MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as
Line0005
FROM SVGProperties
WHERE ImageID IN(1,2,3,6)
GROUP BY ImageID
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sylvain Lafontaine
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma requête d'analyse croisée doit se contruire dynamiquement en fonction des enregistrements contenus dans cette table A.
J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant mais dans ce cas, les colonnes sont codées en dur dans la requête :
SELECT ImageID, MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as Line0001, MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as Line0002, MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as Line0003, MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as Line0004, MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as Line0005 FROM SVGProperties WHERE ImageID IN(1,2,3,6) GROUP BY ImageID
Quelqu'un a t-il une solution à m'apporter ?
Aloha, 2nis.
Si votre table est vivante, la seule façon d'y parvenir est d'abord de
parcourir votre table une première fois pour connaître les valeurs des
colonnes à utiliser puis à le faire une deuxième fois pour calculer les
valeurs requises. Si nécessaire, vous devrez aussi utiliser une table
temporaire ou un lock si autrement la détermination des colonnes peut
changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous
devriez trouver plusieurs exemples.
Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma
requête d'analyse croisée doit se contruire dynamiquement en fonction des
enregistrements contenus dans cette table A.
J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant
mais
dans ce cas, les colonnes sont codées en dur dans la requête :
SELECT ImageID,
MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as
Line0001,
MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as
Line0002,
MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as
Line0003,
MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as
Line0004,
MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as
Line0005
FROM SVGProperties
WHERE ImageID IN(1,2,3,6)
GROUP BY ImageID
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma requête d'analyse croisée doit se contruire dynamiquement en fonction des enregistrements contenus dans cette table A.
J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant mais dans ce cas, les colonnes sont codées en dur dans la requête :
SELECT ImageID, MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as Line0001, MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as Line0002, MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as Line0003, MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as Line0004, MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as Line0005 FROM SVGProperties WHERE ImageID IN(1,2,3,6) GROUP BY ImageID
Quelqu'un a t-il une solution à m'apporter ?
Aloha, 2nis.
Denis
Merci pour ces pistes, je m'en vais les explorer.
2nis
"Sylvain Lafontaine" wrote:
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"Denis" wrote in message news: > Bonjour, > > Je recherche comment, dans une procédure stockée, créer une requete > d'analyse croisée qui se construit dynamiquement. > > J'ai une table A > > > ID_SITE LIBELLE > ========================= > > 1 AAAAA > 2 BBBBB > 3 CCCCC > > > puis une table B > > > ID MOIS ANNEE ID_SITE NOMBRE > ============================================= > > 1 1 2005 1 10 > 2 1 2005 3 20 > 3 2 2005 2 5 > 4 3 2005 3 54 > > > Je souhaite obtenir ceci : > > > MOIS ANNEE AAAAA BBBBB CCCCC > ==================================== > > 1 2005 10 20 > 2 2005 5 > 3 2005 54 > > > Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma > requête d'analyse croisée doit se contruire dynamiquement en fonction des > enregistrements contenus dans cette table A. > > J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant > mais > dans ce cas, les colonnes sont codées en dur dans la requête : > > SELECT ImageID, > MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as > Line0001, > MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as > Line0002, > MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as > Line0003, > MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as > Line0004, > MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as > Line0005 > FROM SVGProperties > WHERE ImageID IN(1,2,3,6) > GROUP BY ImageID > > Quelqu'un a t-il une solution à m'apporter ? > > Aloha, 2nis. >
Merci pour ces pistes, je m'en vais les explorer.
2nis
"Sylvain Lafontaine" wrote:
Si votre table est vivante, la seule façon d'y parvenir est d'abord de
parcourir votre table une première fois pour connaître les valeurs des
colonnes à utiliser puis à le faire une deuxième fois pour calculer les
valeurs requises. Si nécessaire, vous devrez aussi utiliser une table
temporaire ou un lock si autrement la détermination des colonnes peut
changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous
devriez trouver plusieurs exemples.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
"Denis" <Denis@discussions.microsoft.com> wrote in message
news:C51E7176-F29D-49A8-AB04-F462CE0F7D62@microsoft.com...
> Bonjour,
>
> Je recherche comment, dans une procédure stockée, créer une requete
> d'analyse croisée qui se construit dynamiquement.
>
> J'ai une table A
>
>
> ID_SITE LIBELLE
> ========================= > > 1 AAAAA
> 2 BBBBB
> 3 CCCCC
>
>
> puis une table B
>
>
> ID MOIS ANNEE ID_SITE NOMBRE
> ============================================= > > 1 1 2005 1 10
> 2 1 2005 3 20
> 3 2 2005 2 5
> 4 3 2005 3 54
>
>
> Je souhaite obtenir ceci :
>
>
> MOIS ANNEE AAAAA BBBBB CCCCC
> ==================================== > > 1 2005 10 20
> 2 2005 5
> 3 2005 54
>
>
> Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma
> requête d'analyse croisée doit se contruire dynamiquement en fonction des
> enregistrements contenus dans cette table A.
>
> J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant
> mais
> dans ce cas, les colonnes sont codées en dur dans la requête :
>
> SELECT ImageID,
> MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as
> Line0001,
> MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as
> Line0002,
> MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as
> Line0003,
> MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as
> Line0004,
> MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as
> Line0005
> FROM SVGProperties
> WHERE ImageID IN(1,2,3,6)
> GROUP BY ImageID
>
> Quelqu'un a t-il une solution à m'apporter ?
>
> Aloha, 2nis.
>
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"Denis" wrote in message news: > Bonjour, > > Je recherche comment, dans une procédure stockée, créer une requete > d'analyse croisée qui se construit dynamiquement. > > J'ai une table A > > > ID_SITE LIBELLE > ========================= > > 1 AAAAA > 2 BBBBB > 3 CCCCC > > > puis une table B > > > ID MOIS ANNEE ID_SITE NOMBRE > ============================================= > > 1 1 2005 1 10 > 2 1 2005 3 20 > 3 2 2005 2 5 > 4 3 2005 3 54 > > > Je souhaite obtenir ceci : > > > MOIS ANNEE AAAAA BBBBB CCCCC > ==================================== > > 1 2005 10 20 > 2 2005 5 > 3 2005 54 > > > Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma > requête d'analyse croisée doit se contruire dynamiquement en fonction des > enregistrements contenus dans cette table A. > > J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant > mais > dans ce cas, les colonnes sont codées en dur dans la requête : > > SELECT ImageID, > MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as > Line0001, > MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as > Line0002, > MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as > Line0003, > MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as > Line0004, > MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as > Line0005 > FROM SVGProperties > WHERE ImageID IN(1,2,3,6) > GROUP BY ImageID > > Quelqu'un a t-il une solution à m'apporter ? > > Aloha, 2nis. >
Denis
C'est exactement ce qu'il me fallait et cela fonctionne bien
Merci
"Sylvain Lafontaine" wrote:
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"Denis" wrote in message news: > Bonjour, > > Je recherche comment, dans une procédure stockée, créer une requete > d'analyse croisée qui se construit dynamiquement. > > J'ai une table A > > > ID_SITE LIBELLE > ========================= > > 1 AAAAA > 2 BBBBB > 3 CCCCC > > > puis une table B > > > ID MOIS ANNEE ID_SITE NOMBRE > ============================================= > > 1 1 2005 1 10 > 2 1 2005 3 20 > 3 2 2005 2 5 > 4 3 2005 3 54 > > > Je souhaite obtenir ceci : > > > MOIS ANNEE AAAAA BBBBB CCCCC > ==================================== > > 1 2005 10 20 > 2 2005 5 > 3 2005 54 > > > Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma > requête d'analyse croisée doit se contruire dynamiquement en fonction des > enregistrements contenus dans cette table A. > > J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant > mais > dans ce cas, les colonnes sont codées en dur dans la requête : > > SELECT ImageID, > MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as > Line0001, > MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as > Line0002, > MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as > Line0003, > MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as > Line0004, > MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as > Line0005 > FROM SVGProperties > WHERE ImageID IN(1,2,3,6) > GROUP BY ImageID > > Quelqu'un a t-il une solution à m'apporter ? > > Aloha, 2nis. >
C'est exactement ce qu'il me fallait et cela fonctionne bien
Merci
"Sylvain Lafontaine" wrote:
Si votre table est vivante, la seule façon d'y parvenir est d'abord de
parcourir votre table une première fois pour connaître les valeurs des
colonnes à utiliser puis à le faire une deuxième fois pour calculer les
valeurs requises. Si nécessaire, vous devrez aussi utiliser une table
temporaire ou un lock si autrement la détermination des colonnes peut
changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous
devriez trouver plusieurs exemples.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
"Denis" <Denis@discussions.microsoft.com> wrote in message
news:C51E7176-F29D-49A8-AB04-F462CE0F7D62@microsoft.com...
> Bonjour,
>
> Je recherche comment, dans une procédure stockée, créer une requete
> d'analyse croisée qui se construit dynamiquement.
>
> J'ai une table A
>
>
> ID_SITE LIBELLE
> ========================= > > 1 AAAAA
> 2 BBBBB
> 3 CCCCC
>
>
> puis une table B
>
>
> ID MOIS ANNEE ID_SITE NOMBRE
> ============================================= > > 1 1 2005 1 10
> 2 1 2005 3 20
> 3 2 2005 2 5
> 4 3 2005 3 54
>
>
> Je souhaite obtenir ceci :
>
>
> MOIS ANNEE AAAAA BBBBB CCCCC
> ==================================== > > 1 2005 10 20
> 2 2005 5
> 3 2005 54
>
>
> Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma
> requête d'analyse croisée doit se contruire dynamiquement en fonction des
> enregistrements contenus dans cette table A.
>
> J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant
> mais
> dans ce cas, les colonnes sont codées en dur dans la requête :
>
> SELECT ImageID,
> MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as
> Line0001,
> MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as
> Line0002,
> MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as
> Line0003,
> MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as
> Line0004,
> MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as
> Line0005
> FROM SVGProperties
> WHERE ImageID IN(1,2,3,6)
> GROUP BY ImageID
>
> Quelqu'un a t-il une solution à m'apporter ?
>
> Aloha, 2nis.
>
C'est exactement ce qu'il me fallait et cela fonctionne bien
Merci
"Sylvain Lafontaine" wrote:
Si votre table est vivante, la seule façon d'y parvenir est d'abord de parcourir votre table une première fois pour connaître les valeurs des colonnes à utiliser puis à le faire une deuxième fois pour calculer les valeurs requises. Si nécessaire, vous devrez aussi utiliser une table temporaire ou un lock si autrement la détermination des colonnes peut changer entre les deux étapes.
En cherchant sur Google avec les mots-clef « report cross-tab sql », vous devriez trouver plusieurs exemples.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"Denis" wrote in message news: > Bonjour, > > Je recherche comment, dans une procédure stockée, créer une requete > d'analyse croisée qui se construit dynamiquement. > > J'ai une table A > > > ID_SITE LIBELLE > ========================= > > 1 AAAAA > 2 BBBBB > 3 CCCCC > > > puis une table B > > > ID MOIS ANNEE ID_SITE NOMBRE > ============================================= > > 1 1 2005 1 10 > 2 1 2005 3 20 > 3 2 2005 2 5 > 4 3 2005 3 54 > > > Je souhaite obtenir ceci : > > > MOIS ANNEE AAAAA BBBBB CCCCC > ==================================== > > 1 2005 10 20 > 2 2005 5 > 3 2005 54 > > > Mon problème, c'est que ma table A est "vivante" ce qui signifie que ma > requête d'analyse croisée doit se contruire dynamiquement en fonction des > enregistrements contenus dans cette table A. > > J'ai trouvé un lien dans un précedent post qui donne l'exemple suivant > mais > dans ce cas, les colonnes sont codées en dur dans la requête : > > SELECT ImageID, > MAX(CASE WHEN SVGProperty='Line0001' THEN SVGPropertyValue END) as > Line0001, > MAX(CASE WHEN SVGProperty='Line0002' THEN SVGPropertyValue END) as > Line0002, > MAX(CASE WHEN SVGProperty='Line0003' THEN SVGPropertyValue END) as > Line0003, > MAX(CASE WHEN SVGProperty='Line0004' THEN SVGPropertyValue END) as > Line0004, > MAX(CASE WHEN SVGProperty='Line0005' THEN SVGPropertyValue END) as > Line0005 > FROM SVGProperties > WHERE ImageID IN(1,2,3,6) > GROUP BY ImageID > > Quelqu'un a t-il une solution à m'apporter ? > > Aloha, 2nis. >