У меня есть сценарий, который аналогичен приведенному ниже:Sql запрос с графом и GroupBy
Есть две таблицы Transaction
и Product
Transaction
таблица имеет столбцы
Id, Amount ProductId TransactionDate ,DepartmentId
1, 100 100 01/01/2013 1
2, 200 101 02/01/2013 2 and so on....
Product
таблица имеет колонны
Id, Name, ProductType.
100, AB , 1
101 C , 2
Я хочу, чтобы написать один хранимую процедуру, которая выводит следующее:
Month Year Department Count(Transactions) Count(Transactions of ProductType1)
Feb 2012 1 100 50
Mar 2012 1 100 50
Apr 2012 1 100 50
Feb 2012 2 100 50
я до сюда:
select
YEAR(T.TransactionDate) AS [YEAR],
MONTH(T.TransactionDate) AS [MONTH],
Count(T.Id)
from
Transaction T
INNER JOIN
Product P ON P.Id = T.ProductId
group by
T.DepartmentId, YEAR(T.TransactionDate), MONTH(T.TransactionDate);
Он выводит следующее:
Month Year Department Count(Transactions)
Я хочу знать, как Я также могу включить:
Count(Transactions of ProductType1)
Я также попытался это:
select
YEAR(T.TransactionDate) AS [YEAR],
MONTH(T.TransactionDate) AS [MONTH],
Count(T.Id)
(Select Count(T.Id)
from Transaction T
INNER JOIN Product P ON P.Id = T.ProductId
where P.Id = 1)
from
Transaction T
INNER JOIN
Product P ON P.Id = T.ProductId
group by
T.DepartmentId, YEAR(T.TransactionDate), MONTH(T.TransactionDate);
Это дает мне неточные результаты для сделок подсчитывать, где ProductID = 1 из группы по п
Я не хочу писать отдельный запрос .. но я хотите знать, есть ли эффективный способ заставить оператор SQL возвращать следующее в одном запросе?
Month Year Department Count(Transactions) Count(Transactions of ProductType1)
Спасибо! Решение легко – CodeNinja
Не могли бы вы рассказать мне, что мне нужно сделать, если я хочу добавить ключевое слово DISTINCT в SUM, я ищу, чтобы найти отдельные продукты. – CodeNinja
@SQL Я думаю, что 'DISTINCT' может существенно изменить ответ, поэтому я рекомендую вам задать другой вопрос, если вы хотите получить лучший ответ для своей ситуации. – Lamak