Вывести два столбца для 1 поля для разных диапазонов дат? - PullRequest
0 голосов
/ 22 января 2010

У меня есть таблица SQL "ITM_SLS" со следующими полями:

ITEM
DESCRIPTION
TRANSACTION #
DATE
QTY SOLD

Я хочу иметь возможность вывести QTY SOLD для значения за один месяц и значения за год, чтобы выходные данные выглядели так:

ITEM, DESCRIPTION, QTY SOLD MONTH, QTY SOLD YEAR TO DATE

Возможно ли это?

Ответы [ 3 ]

1 голос
/ 22 января 2010

Предполагая, что "один месяц" - это последний месяц ...

select item
       , description
       , sum (case when trunc(transaction_date, 'MM') 
                           = trunc(add_months(sysdate, -1), 'MM') 
                   then qty_sold
                   else 0
                   end) as sold_month
       , sum(qty_sold) as sold_ytd
from itm_sls
where transaction_date >= trunc(sysdate, 'yyyy')
group by item, description
/
1 голос
/ 22 января 2010

Вы можете рассчитать общее количество проданных товаров, используя group by в подзапросе. Например

select a.Item, a.Description, b.MonthQty, c.YearQty
from (
    select distinct Item, Description from TheTable
) a
left join (
    select Item, sum(Qty) as MonthQty
    from TheTable 
    where datediff(m,Date,getdate()) <= 1
    group by Item
) b on a.Item = b.Item
left join (
    select Item, sum(Qty) as YearQty
    from TheTable 
    where datediff(y,Date,getdate()) <= 1
    group by Item
) c on a.Item = c.Item

Метод ограничения подзапроса определенным диапазоном дат зависит от СУБД, в этом примере используется функция SQL Server datediff.

0 голосов
/ 22 января 2010

Это даст вам представление о том, что вы можете сделать:

select 
    ITEM,
    DESCRIPTION, 
    QTY SOLD as MONTH, 
    ( select sum(QTY SOLD)
      from ITM_SLS
      where ITEM = I.ITEM
        AND YEAR = i.YEAR
     ) as YEAR TO DATE
from ITM_SLS I
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...