Interbase

Interbase SQL 分組和顯示

  • November 29, 2016

我有一個包含不同數據的數據庫,我需要進行查詢以選擇具有總和數量的組。

兩個表:PositionsDocuments

一個文件中可以有多個位置,兩者都由 連接unique_id

文件有兩種不同的狀態:InOut

我需要在一行中查看這兩種狀態的結果,每種情況都有一列,但是我的查詢給了我兩行。我該怎麼做?

我的查詢沒有給我這個結果:

Select   documents.code
       ,positions.fullname
       ,case when documents.status='In' then Sum(positions.quantity) else 0 end as DocIn
       ,case when documents.status='Out' then Sum(positions.quantity) else 0 end as DocOut
from positions
   inner join documents
       on documents.unique_id=positions.unique_id
group by documents.code, positions.fullname, documents.status

每個文件有兩行,因為您按 分組documents.status。您需要SUM()稍微不同地使用,然後documents.statusGROUP BY子句中刪除:

Select   documents.code
       ,positions.fullname
       ,SUM(case when documents.status='In' THEN positions.quantity ELSE 0 END) AS DocIn
       ,SUM(case when documents.status='Out' THEN positions.quantity ELSE 0 END) AS DocOut
from positions 
inner join documents
on documents.unique_id=positions.unique_id 
group by documents.code, positions.fullname

引用自:https://dba.stackexchange.com/questions/156660