Plateformes d'assistanceDiscussions & Opinions des Communautés
|
|
|
|
{SQL Server} Somme de deux requêtes imbriquée
Dernière réponse le 24 jun 2009 à 14:52:53 yanouk, le 24 jun 2009 à 11:47:31Bonjour,
voici ma requête :
SELECT distinct b.[Code], ( select cast(sum(a.Amount) as numeric(10,2)) FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code] and [Sales header].[Currency Factor]=0 ), ( select cast((sum(a.Amount)*(1/[Sales header].[Currency Factor])) as numeric(10,2)) FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code] and [Sales header].[Currency Factor]<>0 group by [Sales header].[Currency Factor] ) FROM [Salesperson_Purchaser] b where b.[Code] between '100' and '199' group by b.[Code] order by b.[Code]
petite explication :
ma première requête retourne les montants par représentant où la devise est l'€ (par défault "Currency Factor" = 0)
ma deuxième requête retourne les montants par représentant où la devise est différent de l'€ ("Currency Factor" est donc différent de 0)
je converti donc ce montant avec "Currency Factor" pour obtenir un montant en €
mon problème :
je voudrais faire une addition des deux requêtes imbriquées afin d'obtenir une seule colonne.
est-t-il possible de faire cela ?
merci bien pour votre aide!
Configuration: Windows XP Firefox 3.0.11
Meilleures réponses pour « {SQL Server} Somme de deux requêtes imbriquée » dans :
Télécharger Clarity SQL Server Edition VoirMicrosoft SQL Server est un puissant et intuitif outil de développement de bases de données.
Clarity SQL Server Edition est l’outil parfait pour écrire des requêtes. Il permet également de créer et de modifier des objets de base de données...
Bonjour,
SELECT distinct b.[Code], (( select cast(sum(a.Amount) as numeric(10,2)) FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code] and [Sales header].[Currency Factor]=0 ) + ( select cast((sum(a.Amount)*(1/[Sales header].[Currency Factor])) as numeric(10,2)) FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code] and [Sales header].[Currency Factor]<>0 group by [Sales header].[Currency Factor] )) as MontantTotal FROM [Salesperson_Purchaser] b where b.[Code] between '100' and '199' group by b.[Code] order by b.[Code] J'ai remplacé la , par le signe + entre les deux résultats. A plus On se donne des souvenirs quand on se quitte. (Marcel Achard) |
Bonjour,
SELECT distinct b.[Code], sum( (select CASE [Sales header].[Currency Factor] WHEN 0 THEN a.Amount ELSE (a.Amount * (1/[Sales header].[Currency Factor])) END FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code] )) as MontantTotal FROM [Salesperson_Purchaser] b where b.[Code] between '100' and '199' group by b.[Code] order by b.[Code] Je ne l'ai pas testé, à toi de voir. A plus On se donne des souvenirs quand on se quitte. (Marcel Achard) |
Je n'avais pas pensé au case c'est vrai, cela semblé une très bonne solution mais...erreur ;(
|
Bonjour,
SELECT distinct b.[Code], (select sum( CASE [Sales header].[Currency Factor] WHEN 0 THEN a.Amount ELSE (a.Amount * (1/[Sales header].[Currency Factor])) END) FROM [Sales Line] a , [Sales header] where a.[Document No_]=[Sales header].No_ and b.[Code]=a.[PfsSalesperson Code]) as MontantTotal FROM [Salesperson_Purchaser] b where b.[Code] between '100' and '199' J'ai aussi retiré le group by et order by car cela n'est pas nécessaire quand on utilise DISTINCT A plus On se donne des souvenirs quand on se quitte. (Marcel Achard) |

