2010-10-13 6 views
1

Y a-t-il un moyen, dans SQL SERVER ou ORACLE, d'utiliser l'instruction case pour convertir l'unité de mesure ci-dessous?Comment convertir UNITE de MESURE dans SQL SERVER OU ORACLE A L'AIDE DE L'ETAT DE CAS

select UoM, sum(Quantity) as 'QTY' 
from mytable 
group by UoM 


UoM QTY 
LBS 2.4 
LBS 2 
LBS 0.233 
LBS 0.97 
OZS 1.8 
GMS 1236 
LBS 120.459 
LBS 59.1 
LBS 252.82 
LBS 175.23 
LBS 3.42 
LBS 455.4 
LBS 57.6 
LBS 146.8 
LBS 117.78 
LBS 197.92 
LBS 40.245 
GMS 9 
LBS 15.78 
LBS 12.6 
LBS 125.1 
LBS 42.3 
LBS 1292.3 

1 livre = 16 onces (OZS) 1 livre = 453,5924 gramme (GMS)

+0

Quelle est la structure de votre table? Avez-vous votre 'UoM' et la mesure dans deux colonnes différentes? –

Répondre

2

Je suppose que vous pourriez faire quelque chose comme

SELECT sum((case when UoM = 'LBS' then quantity 
        when UoM = 'OZS' then quantity/16 
        when UoM = 'GMS' then quantity/453.5924 
        else null 
       end)) weight_in_lbs, 
     sum((case when UoM = 'LBS' then quantity*16 
        when UoM = 'OZS' then quantity 
        when UoM = 'GMS' then quantity*16/453.5924 
        else null 
       end)) weight_in_ozs, 
     sum((case when UoM = 'LBS' then quantity*453.5924 
        when UoM = 'OZS' then quantity*453.5924/16 
        when UoM = 'GMS' then quantity 
       end)) weight_in_gms 
    FROM myTable 
4

Vous cherchez juste un unique total général? Ou un sous-total de chaque mesure différente? Ou le même total exprimé en 3 mesures différentes?

SELECT SUM(CASE UoM 
     WHEN 'GMS' THEN Quantity 
     WHEN 'LBS' THEN Quantity * 453.5924 
     WHEN 'GMS' THEN Quantity * 453.5924/16 
     END) AS TOTALGrams 
FROM myTable 

Doit vous donner le total général en Grams.

+0

Différentes mesures. Mais cela fonctionnerait. MERCI, BradC! – joe

Questions connexes