2010-02-02 2 views
0

C'est ce que j'ai jusqu'à présent dans le code SQL ........Microsoft Access 2003 - la création d'un champ distinct qui totalise 5 autres champs de la table

SELECT DISTINCTROW [OEE/A Query].Press, 
Sum([OEE/A Query].[SumOfLabor Hours]) AS [Sum Of SumOfLabor Hours], 
Sum([OEE/A Query].[SumOfGood Pieces]) AS [Sum Of SumOfGood Pieces], 
Sum([OEE/A Query].[Scrap Pieces]) AS [SumOfScrap Pieces], 
Sum([OEE/A Query].[SumOfMachine Hours]) AS [SumOfSumOfMachine Hours], 
Sum([OEE/A Query].[Total Parts Hours Earned]) AS [SumOfTotal Parts Hours Earned], 
Sum([OEE/A Query].[Standard Pcs Expected]) AS [Stand Pcs Expected] 
FROM [OEE/A Query] 
GROUP BY [OEE/A Query].Press; 

Comment puis-je ajouter à ce code un autre champ qui totalise 5 autres champs distincts?

Voici ce que je pense qu'il pourrait ressembler mais je ne suis pas sûr .....

SELECT Sum(Sort+Straighten+Shine+Standardize+Sustain) 
    SUM(Sort), 
    SUM(Straighten), 
    SUM(Shine), 
    SUM(Standardize), 
    SUM(Sustain), 
FROM [Shift Report Table]; 

Répondre

0

Oui, cela est exact. Vous pouvez ajouter des champs dans la fonction sum pour additionner la somme des champs.

1

Cela dépend de ce que vous demandez vraiment. Je ne suis pas sûr si votre deuxième requête est juste un autre exemple, ou, si c'est en fait une source de données différente à ajouter dans votre première requête.

Si vous souhaitez ajouter une autre colonne à votre premier exemple de requête en fonction des colonnes qui existent déjà dans votre requête, alors oui, ajoutez-les simplement ensemble, comme indiqué par CK.

par exemple.

select sum(column1) + sum(column2) as sum_c1_c2 

ou

select sum(column1 + column2) as sum_c1_c2 

lorsque vous faites des fonctions d'agrégation j'ai une vieille habitude de traiter des valeurs NULL pour vous assurer que je reçois les résultats que je pense que je devrais obtenir. par exemple.

select sum(nz(column1,0) + nz(column2,0)) as sum_c1_c2 

Maintenant si vous demandez comment ajouter une nouvelle colonne à partir d'une source de données, vous pouvez joindre à cette autre source de données, ou, si le retour juste une seule valeur, peut utiliser une sélection en ligne.

En outre, un mot d'avertissement à propos de distinctrow - Je ne suis pas sûr que vous voulez utiliser cela dans votre requête. Vous faites un groupe par, donc seules les valeurs uniques de [appuyez sur] seront sélectionnées avec les colonnes agrégées selon votre fonction SUM(). C'est vraiment la main pour des choses comme déterminer si (à titre d'exemple) un produit a été commandé par ex.

select DISTINCTROW productname 
from products 
inner join orders on orders.productid = products.productid 

va revenir à seulement 1 ligne donc il n'y a aucune chance pour une agrégation dans le cas ci-dessus. Mais vous voudrez peut-être clarifier un peu plus vos exigences. CK pourrait avoir déjà donné la réponse, ou, nous pourrions avoir besoin d'inclure une source de données différente (comme votre deuxième requête).

Questions connexes