2010-12-14 53 views
0

Quelqu'un peut-il m'aider? S'il vous plaît, je veux calculer 2 rangées ou plus Record Voir ci-dessous.Calcule deux rangées en noir et blanc

SELECT docs_DocCode, SUM(invd_Qty) AS Total_IN 
FROM dbo.SI_InventoryDetail 

WHERE (docs_DocCode = 'D.C') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'STO') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'SAO') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'IOB') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'GRN') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'STI') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'SAI') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'SRN') AND (itm_ItemCode = '0101050000083') OR 
     (docs_DocCode = 'PRN') AND (itm_ItemCode = '0101050000083') 
GROUP BY docs_DocCode 

Donnez-moi la requête ci-dessus comme ci-dessous Résultat

dics_doccode Total 
D.C   328.00000000 
GRN   205.00000000 
IOB    96.00000000 
SAI    66.00000000 
SAO    51.00000000 
SRN    14.00000000 
STI   150.00000000 
STO   150.00000000 

Maintenant, je veux ajouter (D.C. + STI + SAI) - (GRN + STI + SAI + IOB) = Une valeur

Et je suis en utilisant SQL Server 2000

Thankx

Répondre

1
SELECT SUM(CASE 
      WHEN docs_DocCode IN ('D.C', 'STI', 'SAI') THEN invd_Qty 
      WHEN docs_DocCode IN ('GRN', 'STI', 'SAI', 'IOB') THEN -1 * invd_Qty 
      ELSE 0 
      END) AS One_Value 
.... 

Notez que invd_Qty n'appartenant à aucun 'D.C', 'STI', 'SAI', 'GRN', 'STI', 'SAI', 'IOB' ne sera ajouté.

PS: (D.C. + STI + SAI) - (+ GRN STI + SAI + IOB) - Je l'ai souligné les parties inutiles (??). Il est égal à D.C. - (SAI + IOB)

+0

Cher thankx pour Réponse rapide mais vous requête donnée ne fonctionne pas –

+0

Mon Je veux Ajouter Où Cluse voici qui identifient mon article fondamentalement que le calcul est pour l'état actuel du stock .... –

+0

@Brave ali Khatri: 'ne fonctionne pas» n'est pas assez description détaillée d'un problème. Et je ne peux pas obtenir votre 2ème commentaire complet: -S – zerkms

0

Je résolus Mon problème thankx à "Zerkms" ci-dessous est ma requête et il Résultat

SELECT Itm_itemcode,

SUM(CASE WHEN docs_DocCode IN ('D.C', 'STO', 'SAO','PRN') THEN INVD_QTY END) - 
    SUM(CASE WHEN docs_DocCode IN ('GRN', 'STI', 'SAI','SRN','IOB') THEN invd_Qty END) AS Qty 

De SI_InventoryDetail

Où Itm_itemcode = '0101050000083'

groupe par Itm_itemcode

Résultat

Item_code Quantité
0101050000083 -2,00000000

Thankx Brave ali Khatri

+0

Si vous avez trouvé ma réponse utile, vous pouvez la vérifier avec la marque verte ci-dessous le numéro de vote: 3 – zerkms