Динамически группируется с помощью «Заголовка группы» - PullRequest
0 голосов
/ 11 марта 2019

Может ли кто-нибудь помочь мне с этой проблемой. У меня есть таблица с Products, ProductsSales. Вот несколько скриншотов из них.

Product table

Product sales table

Теперь я хотел бы сделать запрос TSQL, который может сгруппировать их и добавить что-то вроде «описания заголовка»? Как то так

Endproduct

Было бы идеально, если бы это был относительно динамический запрос.

Может ли кто-нибудь помочь мне здесь или дать мне несколько советов?

Ответы [ 3 ]

0 голосов
/ 11 марта 2019

Вы можете использовать GROUP BY с GROUPING SETS в SQL Server для получения желаемого результата.

SELECT CASE 
         WHEN groupname IS NOT NULL THEN groupname 
         WHEN groupname IS NULL 
              AND productname IS NULL THEN 'food' 
         ELSE productname 
       END          AS GroupName, 
       Sum(s.price) price 
FROM   product p 
       INNER JOIN TableSales s 
               ON p.productid = s.productid 
GROUP  BY grouping sets( ( p.productname ), ( p.groupname ), ( ) ) 

Онлайн-демонстрация

Выход

+------------+-------+
| GroupName  | price |
+------------+-------+
| fruit      | 14    |
+------------+-------+
| vegetables | 52    |
+------------+-------+
| food       | 66    |
+------------+-------+
| Apple      | 5     |
+------------+-------+
| Capsicum   | 35    |
+------------+-------+
| Cucumber   | 17    |
+------------+-------+
| Orange     | 9     |
+------------+-------+
0 голосов
/ 11 марта 2019

Я был бы склонен разворачивать категории и затем агрегировать:

select which, name, sum(price)
from products p cross apply
     (values ('productName', productName),
             ('groupName', groupName),
             ('parentGroup', parentGroup)
     ) v(which, name) left join
     productsales ps
     on ps.productId = p.productId
group by which, name;
0 голосов
/ 11 марта 2019

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

SELECT DISTINCT A.ProductName, B.Price 
FROM Product A 
INNER JOIN Product_Sales B ON A.ProductId = B.ProductId
GROUP BY ProductName, Price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...