Bonjour Rafika,
La fonction Pivot n'est pas proposée en standard dans l'activité Requête d'un workflow (Sélection avancée).
Ceci dit, pour la transformation dont vous avez besoin, il me semble que cette méthode très simple, d'ajout de colonnes additionnelles d'entités liées peut vous convenir :



Puis sélectionner votre relation Contrat.
Dans mon instance, pas de contrat, je vous montre sur une entité équivalente :

Si vous ne limitez pas à 3 lignes, vous obtiendrez autant de colonnes contrat qu'il y a en base pour le client ayant le plus de contrat.
Poursuivez sur l'assistant jusqu'au dernier écran de paramétrage pour sélectionner les colonnes à ajouter :

Vous obtenez quelque chose comme ceci :

Dans Propriétés de votre workflow, pour tester (pas en production), cocher :

Ensuite, exécutez votre worklow et sur la flêche de transition, clic droit, Afficher la cible ; vous devriez obtenir un résultat similaire :

Le contexte targetData (temp:query si votre requête s'appelle query) est donc enrichi des colonnes additionnelles que vous souhaitez.
Ensuite il suffit d'utiliser les données de ce contexte comme vous le voulez dans votre diffusion ou bien les activités de traitement du reste de votre workflow.
Par exemple les mettre dans un tableau de votre diffusion dans l'ordre exact que vous souhaitez.
Si vous souhaitez plus loin, avec de "vraies" fonctions pivot, lisez la suite, sinon oubliez, cela va vous embrouillez...
Auparavant (en 6.0), il était possible de directement saisir une requête SQL native dans cette activité Requête (SQLData), mais pour des raisons de sécurité, la fonctionnalité SQLData a été supprimé à partir de la v6.1, et c'est tout à fait légitime.
Donc pour des requêtes qu'il n'est pas possible d'effectuer via l'assistant de l'activité Requête (car transformation sur plusieurs entités), il faut passer par une activité Javascript.
Il faut utiliser la méthode query de l'objet DDBEngine (cf la documentation JS API v6.1), ainsi vous avez toute la souplesse et les possibilités du moteur de votre base de données !
(A noter : DBengine.query n'est pas disponible dans une webApp, mais dans un workflow, c'est bon !)
Par exemple :
var cnx = application.getConnection()
try
{
var stmt = cnx.query("SELECT
Produit,
SUM
(
[
2003
]
)
AS
[
2003
]
,
SUM
(
[
2004
]
)
AS
[
2004
]
,
SUM
(
[
2005
]
)
AS
[
2005
]
,
SUM
(
[
2006
]
)
AS
[
2006
]
FROM
Ventes
PIVOT (
SUM
(
Vente)
FOR
annee IN
(
[
2003
]
, [
2004
]
, [
2005
]
, [
2006
]
)
)
AS
Annees
GROUP
BY
Produit
" )
}
catch(e)
{
logWarning("query catched error (contrat data, transposition with pivot)");
logWarning("Error number: " + e );
}
for each(var row in stmt)
logInfo(row[0] + " : " + row[1] + " " + row[2] + " " + row[3] + " " + row[4])
cnx.dispose();
L'exemple donné est avec une syntaxe de requête SQL Sql Server.
Enfin, dernière solution à explorer, comme je vous le disais dans mon précédent post, les bibliothèques Javascript de gestion des pivot tables... L'avantage est une gestion sans doute plus puissante en terme de formatage/présentation.
Cordialement.
Jean-Serge