Aab*_*aby 3 join sql-server query sum
我跑了咆哮查询;
询问:
SELECT j.jobId,
j.productId,
p.productUnitPrice
FROM JobRequiredProducts J
JOIN Product p
ON p.productId = j.productId
WHERE j.jobId = 1
ORDER BY j.jobId
Run Code Online (Sandbox Code Playgroud)
并得到了以下结果;
查询结果:
jobId | productId | unitPrice
_____________________________
1 | 4 | 175.99
1 | 5 | 100.00
1 | 6 | 125.00
Run Code Online (Sandbox Code Playgroud)
现在,我想计算所有 unitPrice 以获得总数。我期望的结果是;
期待结果:
jobId | productId | Total
____________________________
1 | 4 | 175.99
1 | 5 | 100.00
1 | 6 | 125.00
null | null | 400.99
Run Code Online (Sandbox Code Playgroud)
因此,下面是我尝试过的查询;
我试过的查询:
SELECT j.jobId,
j.productId,
SUM(p.productUnitPrice) AS 'Total'
FROM JobRequiredProducts J
JOIN Product p
ON p.productId = j.productId
WHERE j.jobId = 1
GROUP BY j.jobId,j.productId WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)
但它没有给我预期的结果,我哪里出错了,我必须做些什么才能得到我预期的结果?
您也可以使用分组集
declare @JobRequiredProducts table (jobId int, productId int);
declare @Product table(productId int, productUnitPrice decimal(8,2))
insert into @JobRequiredProducts(jobId,productId)
values(1,4),(1,5),(1,6);
insert into @Product(productId, productUnitPrice)
values(4,175.99),(5 ,100.00),( 6 , 125.00)
SELECT j.jobId,
j.productId,
SUM(p.productUnitPrice) AS 'Total'
FROM @JobRequiredProducts J
JOIN @Product p
ON p.productId = j.productId
WHERE j.jobId = 1
GROUP BY ROLLUP ((j.jobId, j.productId));
Run Code Online (Sandbox Code Playgroud)
带分组集
SELECT j.jobId,
j.productId,
SUM(p.productUnitPrice) AS 'Total'
FROM @JobRequiredProducts J
JOIN @Product p
ON p.productId = j.productId
WHERE j.jobId = 1
GROUP BY GROUPING SETS( (j.jobId, j.productId),());
Run Code Online (Sandbox Code Playgroud)
输出:
jobId productId Total
1 4 175.99
1 5 100.00
1 6 125.00
NULL NULL 400.99
Run Code Online (Sandbox Code Playgroud)
dbfiddle在这里