Получить один день и ежемесячную сумму суммы из одной таблицы на сервере SQL - PullRequest
0 голосов
/ 20 сентября 2011

Я хочу написать запрос для расчета суммы за текущий день и за месяц.

У меня есть TransactionID, Date, Amount столбцов в моей таблице Charge .

Я хочу это в этом формате:

currentDayAmount              TotalMonthlyAmount
$12305                        $236589                  --suppose on 31 Aug 2011
$62598                        $365489                  --suppose on 30 Sep 2011

Здесь CurrentDayAmount - это дата, которую я ввел, чтобы оправдать запрос, а TotalMonthlyAmount - это какой месяц я ввел дату. Это означает, что я хочу выполнить с тремя датами. Первый - это день, в который я хочу выполнить запрос, а последние два - диапазон дат, который необходим для общего ежемесячного количества. Я выполняю приведенный ниже запрос, но показывает правильные данные, но показывает в строках.

select sum(c.amount) 
from charge c 
where c.eDate between '09/16/2011' and '09/17/2011'
union all 
select sum(c1.amount) 
from charge c1
where c1.eDate between '09/01/2011' and '09/20/2011'

Результат

$33256.25
$705826.36

Я хочу эти данные в столбцах как

current            Monthly
$33256.25          $705826.36

Надеюсь, этой информации достаточно, чтобы понять, что я хочу сделать.
Пожалуйста, дайте любое предложение или вопрос, чтобы решить мою проблему.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Немного другой подход:

SELECT SUM(CASE 
             WHEN c.edate BETWEEN '09/16/2011' AND '09/17/2011' THEN c.amount 
             ELSE 0 
           END), 
       SUM(CASE 
             WHEN c.edate BETWEEN '09/01/2011' AND '09/20/2011' THEN c.amount 
             ELSE 0 
           END), 
FROM   charge c 
0 голосов
/ 20 сентября 2011

Попробуйте это:

SELECT
    currentDayAmount = (
                         SELECT
                            SUM(c.amount)
                         FROM
                            charge c
                         WHERE
                            c.eDate BETWEEN '09/16/2011' AND '09/17/2011'
                       )
  , TotalMonthlyAmount = (
                           SELECT
                            SUM(c1.amount)
                           FROM
                            charge c1
                           WHERE
                            c1.eDate BETWEEN '09/01/2011' AND '09/20/2011'
                         )
...