Как я могу рассчитать данные столбца для различных условий, используя один запрос на сервере SQL? - PullRequest
2 голосов
/ 12 января 2011

Я использую приведенный ниже запрос для подсчета данных конкретного столбца на основе одного условия.

SELECT COUNT(DISTINCT(S.INVOICENO)) AS LESSTWO , YEAR(S.invoicedate) YER, 
    Month(S.invoicedate) MNTH
FROM SALESDATA S 
where S.BILLINGTYPE='INVOICE' 
    AND (S.invoicedate >='4-1-2009' and S.invoicedate <='4-30-2010')
    AND S.TAXABLEAMT <=2000
GROUP BY YEAR(S.invoicedate) ,Month(S.invoicedate) 
ORDER BY YEAR(S.invoicedate) ,Month(S.invoicedate)

Но мне нужно рассчитать еще 3 условия.Можно ли рассчитывать на основе 3 условий (т.е. 2001 - 3000,3001 - 4000, 4001 - 5000,> 5000), и я хочу, чтобы результат был установлен для всех условий?

С уважением,

N.SRIRAM

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Не проверено, но должно быть примерно правильно:

SELECT CASE
          WHEN S.TaxableAmt <= 2000 THEN '<=2000'
          WHEN S.TaxableAmt <= 3000 THEN '2001-3000'
          WHEN S.TaxableAmt <= 4000 THEN '3001-4000'
          ELSE '>5000'
       END as Bracket,
COUNT(DISTINCT(S.INVOICENO)) AS LESSTWO , YEAR(S.invoicedate) YER, 
    Month(S.invoicedate) MNTH
FROM SALESDATA S 
where S.BILLINGTYPE='INVOICE' 
    AND (S.invoicedate >='20090401' and S.invoicedate <='20100430')
GROUP BY
      CASE
          WHEN S.TaxableAmt <= 2000 THEN '<=2000'
          WHEN S.TaxableAmt <= 3000 THEN '2001-3000'
          WHEN S.TaxableAmt <= 4000 THEN '3001-4000'
          ELSE '>5000'
       END,
YEAR(S.invoicedate) ,Month(S.invoicedate) 
ORDER BY YEAR(S.invoicedate) ,Month(S.invoicedate)

Вы должны повторить выражение регистра в предложении GROUP BY (или поместить все это в подзапрос), и я установил вашу датупостоянные, чтобы они были однозначными.

0 голосов
/ 12 января 2011

Я думаю, вам действительно нужно разделить запрос на 3 разных запроса - по одному для каждого из условий, которые вам необходимы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...