[英]SQL - data from two tables
我想從兩個不同的表中選擇數據並總結一些值
我有兩張桌子:
表材料 :
materialID MaterialName Maxvalue
1234 matA 30
4321 matB 20
表數量 :
materialID quantity
1234 20
1234 1
1234 10
4321 5
4321 6
表material
和Quantity
之間存在匹配-此匹配為materialID
。
我要的是選擇SUM
的那個量在材料數量MAX
值-在這種情況下的結果應該是:
materialname sum
matA 31
我使用了一些內部join
, group by
, sum
函數等,但是沒有成功。
您可以對兩個表進行聯接和分組,然后使用hading子句來過濾結果:
select m.materialname, sum(q.quantity) as quantity
from material m
join quantity q on m.materialid = q.materialid
group by m.materialname
having sum(q.quantity) >= max(m.maxvalue);
>= max(m.maxvalue)
是必需的,因為它是未分組的列(您不能使用having sum(q.quantity) >= m.maxvalue
)。 但是使用max()不會更改任何內容,因為對於相同的材料名稱,所有值都將相同。
在線示例: https : //rextester.com/KNL78530
結合使用子查詢
select m.materialID,MaterialName,Maxvalue
from material m
inner join
(select materialID,sum(quantity) as qty
from quantity
group by materialID
)q m.materialID=q.materialID
where qty>Maxvalue
select materialName, m.maxValue - q.qty
from material m
inner join (
select materialID, sum(quantity) qty
from quantity
group by materialID) q on m.materialID = q.materialID
and q.qty > m.maxValue
看起來像直接連接和:
select m.MaterialName, SUM(q.quantity) from #material m
inner join #quantity q on m.materialID = q.materialID
group by m.MaterialName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.