Une seule colonne en fonction de plusieurs lignes
Résolu
EBIM20
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
EBIM20 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
EBIM20 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pour le traitement de la paie, je suis entrain de préparer une requête (voir requête), mais la problématique est comme suit: j'ai un ensemble d'information à extraire en colonnes en fonction des salariés, la majorité des colonnes à extraire sont des cumuls ( valeurs numériques) qui sont stockées dans une colonne (DecimalValue) de la table 'PaycheckValue', par exemple: le salaire annuel est dans le cumul : 'Salaire_base_ir#' dans la table cumul mais auquel je dois associer la bonne valeur dans la DecimalValue.
J'ai vraiment besoin d'aide
Cordialement
Pour le traitement de la paie, je suis entrain de préparer une requête (voir requête), mais la problématique est comme suit: j'ai un ensemble d'information à extraire en colonnes en fonction des salariés, la majorité des colonnes à extraire sont des cumuls ( valeurs numériques) qui sont stockées dans une colonne (DecimalValue) de la table 'PaycheckValue', par exemple: le salaire annuel est dans le cumul : 'Salaire_base_ir#' dans la table cumul mais auquel je dois associer la bonne valeur dans la DecimalValue.
SELECT [T0].[IdPaycheck], [T0].[DecimalValue] AS SALAIREANNUEL,[T0].[DecimalValue] AS BRUT, [T1].[Id], [T1].[IdCatalogueCumul], [T1].[IdEmployee], [T2].[Id] AS [Id1] , [T3].[IdCatalogue], [T3].[UCode], [T3].[IdElement], [T4].[OLCode], [T4].[Description], [T4].[Id] AS [Id2] , [T5].[Address_Address1], [T5].[RegistrationNumber], [T5].[xx_No_C_I_N], [T5].[xx_No_CNSS], [T5].[BirthName], [T5].[Contact_FirstName] FROM ((((([PaycheckValue] T0 LEFT OUTER JOIN [Paycheck] T1 ON (([T0].[IdPaycheck] = [T1].[Id]))) LEFT OUTER JOIN [CatalogueCumul] T2 ON (([T1].[IdCatalogueCumul] = [T2].[Id]))) LEFT OUTER JOIN [CatalogueLineCumul] T3 ON (([T2].[Id] = [T3].[IdCatalogue]))) LEFT OUTER JOIN [Cumul] T4 ON (([T3].[IdElement] = [T4].[Id]))) LEFT OUTER JOIN [Employee] T5 ON (([T1].[UCodeEmployee] = [T5].[UCode]))) WHERE ((([T5].[VersionStatus] = 1) OR ([T5].[VersionStatus] IS NULL)))
J'ai vraiment besoin d'aide
Cordialement
A voir également:
- Une seule colonne en fonction de plusieurs lignes
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Trier une colonne excel - Guide
- Partage de photos en ligne - Guide
- Formule moyenne excel plusieurs colonnes - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, à part la requête SQL, rien n'est clair.
par exemple, je ne comprends pas du tout la phrase suivante:
la majorité des colonnes à extraire sont des cumuls ( valeurs numériques) qui sont stockées dans une colonne (DecimalValue)
comment des colonnes peuvent-elles être stockées dans une colonne?
peux-tu écrire cela autrement, ou donner des exemples?
par exemple, je ne comprends pas du tout la phrase suivante:
la majorité des colonnes à extraire sont des cumuls ( valeurs numériques) qui sont stockées dans une colonne (DecimalValue)
comment des colonnes peuvent-elles être stockées dans une colonne?
peux-tu écrire cela autrement, ou donner des exemples?
En fait le but c'est d'avoir une liste de salariés en ligne et leurs informations en colonnes. Les cumuls dont je parle peuvent être: ( 'salaire annuel', 'montant brut annuel' ...) les codes de ces cumuls sont dans la colonne 'OLCode' de la table Cumul et leurs valeurs sont dans la colonne DecimalValue de la table PaychekValue, Donc il s'agit de récupérer avec la même colonne plusieurs colonnes en utilisant des ALIAS et cela en fonction du cumul par exemple on va prendre la DecimalValue AS Salaire quand le code cumul = 'salaire' ainsi de suite.... J'espère que j'étais un peu plus claire
donc ta requête te donne exactement ce que tu veux (le bon nombre de lignes), à part que la colonne SALAIREANNUEL devrait être en fait plusieurs colonnes, correspondant à tous les valeurs possibles de OLCode? sur chaque ligne, une seule de ces colonnes serait remplie, les autres étant vides?
si ce n'est pas cela, donne un exemple.
connais-tu les valeurs possibles de OLCode?
si ce n'est pas cela, donne un exemple.
connais-tu les valeurs possibles de OLCode?
peut-être ainsi:
SELECT [T0].[IdPaycheck], [T5].[Address_Address1], [T5].[RegistrationNumber], [T5].[xx_No_C_I_N], [T5].[xx_No_CNSS], [T5].[BirthName], [T5].[Contact_FirstName], sum(case when [T4].[OLCode]= 'salaire annuel' then [T0].[DecimalValue] else 0 end) as SALAIREANNUEL, sum(case when [T4].[OLCode]= 'montant brut annuel' then [T0].[DecimalValue] else 0 end) as BRUT FROM ((((([PaycheckValue] T0 LEFT OUTER JOIN [Paycheck] T1 ON (([T0].[IdPaycheck] = [T1].[Id]))) LEFT OUTER JOIN [CatalogueCumul] T2 ON (([T1].[IdCatalogueCumul] = [T2].[Id]))) LEFT OUTER JOIN [CatalogueLineCumul] T3 ON (([T2].[Id] = [T3].[IdCatalogue]))) LEFT OUTER JOIN [Cumul] T4 ON (([T3].[IdElement] = [T4].[Id]))) LEFT OUTER JOIN [Employee] T5 ON (([T1].[UCodeEmployee] = [T5].[UCode]))) WHERE ((([T5].[VersionStatus] = 1) OR ([T5].[VersionStatus] IS NULL))) group by [T0].[IdPaycheck], [T5].[Address_Address1], [T5].[RegistrationNumber], [T5].[xx_No_C_I_N], [T5].[xx_No_CNSS], [T5].[BirthName], [T5].[Contact_FirstName]
vous avez compris la majorité du problème sauf que pour chaque salarié de ma liste, DecimalValue doit être remplie selon le OLCode du cumul que l'on veut, non pas vide mais forcement y a des valeurs pour chaque salarié, après c'est moi qui lui précise les OLCode concernés pour qu'il me les affiche dans l'ordre que je veux , j'espère que j'ai répondu à votre question, j'ai un fichier excel sur lesquels j'ai les différents colonnes à remplir , ci-après un aperçu (la valeur de tout ce qui est cumul est dans la colonne DecimalValue) faut alors pouvoir les afficher et les faie correspondre au bon salarié)