簡體   English   中英

SQL-來自兩個表的數據

[英]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

materialQuantity之間存在匹配-此匹配為materialID

我要的是選擇SUM的那個量在材料數量MAX值-在這種情況下的結果應該是:

materialname  sum
matA          31

我使用了一些內部joingroup bysum函數等,但是沒有成功。

您可以對兩個表進行聯接和分組,然后使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM