Как преобразовать ЕДИНИЦУ ИЗМЕРЕНИЯ в СЕРВЕР SQL или ИЛИ С ИСПОЛЬЗОВАНИЕМ CASE - PullRequest
1 голос
/ 13 октября 2010

Есть ли способ в SQL SERVER или ORACLE, который может использовать статистику случая для преобразования приведенной ниже единицы измерения?

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 фунт = 16 унций (OZS) 1 фунт = 453,5924 грамма (GMS))

Ответы [ 2 ]

4 голосов
/ 13 октября 2010

Вы просто ищете один общий итог? Или промежуточный итог каждой отдельной меры? Или тот же итог, выраженный в 3 разных мерах?

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

Должно дать вам общую сумму в граммах.

2 голосов
/ 13 октября 2010

Полагаю, вы могли бы сделать что-то вроде

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...