有人可以帮助我解决这个问题。我有一个带有产品表,产品销售表。这是其中的一些屏幕截图。
现在,我想进行一个TSQL查询,该查询可以对它们进行分组并添加类似“标题描述”的内容? 像这样
如果它是一个相对动态的查询,那将是完美的。
有人可以在这里帮我还是给我一些小费?
答案 0 :(得分:0)
尝试这个:
SELECT DISTINCT A.ProductName, B.Price
FROM Product A
INNER JOIN Product_Sales B ON A.ProductId = B.ProductId
GROUP BY ProductName, Price
答案 1 :(得分:0)
您可以在SQL Server中将GROUP BY
与GROUPING SETS
一起使用以获取所需的输出。
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 |
+------------+-------+
答案 2 :(得分:0)
我倾向于取消分类,然后汇总:
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;