У меня возникли проблемы с тем, что кажется простым запросом. Я пытаюсь получить количество раз, когда весь продукт продал, подсчитывая и группируя ProductID
. Я исследовал его онлайн, и каждый, куда я иду, просто добавляет простой COUNT
, но когда я это делаю, он по-прежнему выводит одинаковое количество строк.SQL Server: count ProductID, чтобы получить общее количество раз продано
Так что, если я не использую COUNT
(например), он выводит 1000 строк, и если я использую COUNT
, он выводит 1000 строк и не дает мне правильное время продажи. Все они перечислены как «1» и не группируются и подсчитываются. Я предполагаю, что это имеет какое-то отношение к моим объединениям, но я не могу понять это.
Ниже приведен пример того, что я вижу после использования COUNT (я удалил бренд и date_added, чтобы упростить чтение). ProductID показываются не один раз, хотя они должны быть сгруппированы и подсчитаны.
times_sold | ProductID | title
---------- | --------- | ---------
1 | 17998 | title 2
1 | 13670 | title 3
1 | 17956 | title 4
1 | 4569 | title 5
1 | 12598 | title 1
1 | 12598 | title 1
1 | 17998 | title 2
А вот запрос я бегу:
SELECT TOP (100) PERCENT
COUNT(s.ProductID) AS times_sold,
s.ProductID, p.title, p.brandname, p.date_added
FROM
dbo.TBL_OrderSummary AS s
INNER JOIN
dbo.jewelry AS p ON s.ProductID = p.ProductID
INNER JOIN
dbo.sent_items AS i ON s.InvoiceID = i.ID
GROUP BY
s.ProductID, p.title, p.brandname, p.flare_type, p.date_added,
i.date_order_placed, i.ship_code, p.jewelry
HAVING
(p.title LIKE '%stone%')
AND (i.date_order_placed > CONVERT(DATETIME, '2016-01-01 00:00:00', 102))
AND (i.ship_code = N'paid')
AND (p.flare_type = 'Single flare')
AND (p.jewelry LIKE '%plugs%')
Спасибо за любую помощь!
Это не совсем понятно, что вы ожидаете для вывода здесь, но ваша группа по внешности довольно подозрительно ко мне. Я не думаю, что вы хотите группировать любые значения в send_items. Вы хотите группировать только столбцы, которые составляют группу, которую вы хотите подсчитать. –