合并表中的汇总和汇总

时间:2019-12-12 20:48:00

标签: sql oracle group-by

我有两个表药物和库存。我正在尝试从两个表中选择以下所有详细信息,但是INVENTORY表中也有多个具有不同BRANCH_NO的药物ID清单(INVENTORY中的主键实际上是BRANCH_NO,MEDICATION_ID复合键)

我需要总计各种用药ID,还需要在一个SELECT命令中将表联接起来,并显示每个药物的所有信息(有5个),并在每一行的末尾显示每个药物的总和。但是即时通讯让Group by和Sum以及某一分区进行了混乱。请帮助,我是新来的。

以下是最新的无效版本-但不会显示

  • 药物名称
  • 药物描述
  • 制造商
  • 包装尺寸

就像我碰巧的那样。

SELECT I.MEDICATION_ID,
SUM(I.STOCK_LEVEL)
FROM INVENTORY I
INNER JOIN (SELECT MEDICATION_NAME, SUBSTR(MEDICATION_DESC,1,20) "Medication Description",
MANUFACTURER, PACK_SIZE FROM MEDICATION) M ON MEDICATION_ID=I.MEDICATION_ID
GROUP BY I.MEDICATION_ID;

For the data imagine I want this sort of output:

MEDICATION_ID        MEDICATION_NAME       STOCK_LEVEL      OtherColumns.....
1                    Alpha                 10
2                    Bravo                 20
3                    Charlie               20
1                    Alpha                 30
4                    Delta                 10
5                    Echo                  20
5                    Echo                  40
2                    Bravo                 10

grouping and totalling into this:

MEDICATION_ID        MEDICATION_NAME       STOCK_LEVEL      OtherColumns.....
1                    Alpha                 40
2                    Bravo                 30
3                    Charlie               20
4                    Delta                 10
5                    Echo                  60                  

当它只有一个表时,我就可以得到它,但是当我试图连接表并选择东西时,它就不起作用了。

先谢谢大家。我很欣赏这可能是一个简单的解决方案,但会有所帮助。

1 个答案:

答案 0 :(得分:1)

您需要将所有非聚合的列显式地写入SELECTGROUP BY列表中( Btw,无需使用嵌套查询,如果是{{1} }列中缺少):

MEDICATION_ID

这样,您将能够返回所有列出的列。