使用join的Oracle SQL Count

nle07wnf  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(109)

我正在尝试根据订单类型对订单和订单行进行计数。到目前为止,我已经计算了每个订单类型的订单标题。

SELECT lifnr, 
  COUNT(CASE WHEN e1.bsart = 'NB' THEN 1 ELSE NULL END) Schedule_Orders,
  COUNT(CASE WHEN e1.bsart = 'ZNBS' THEN 1 ELSE NULL END) Store_Orders, 
  COUNT(CASE WHEN e1.bsart = 'ZCSO' THEN 1 ELSE NULL END) Third_Party,
  COUNT(CASE WHEN e1.bsart NOT IN ('ZCSO', 'NB', 'ZNBS' ) THEN 1 ELSE NULL END) Other_Orders,
  COUNT(*) Total_Orders
FROM saprpe.ekko e1 
JOIN saprpe.ekpo p1
ON e1.ebeln = p1.ebeln
WHERE e1.aedat BETWEEN '20130701' AND '20140701'
GROUP BY lifnr

字符串
订单行存储在表EKPO中,因此我使用文档编号将EKKO连接到EKPO。在上述案例中,我如何计算每种订单类型的订单行?我只计算了所有的订单行,而不是针对每种订单类型。

**额外信息:**订单头存储在EKKO中,包含Vendor、OrderNumber和OrderType。EKKO与包含订单行的表EKPO具有一对多关系。订单行通过订单编号与订单题头相关。

我尝试做的是获得NB、ZNBS和ZCSO三种订单类型的总订单标题,以及每种订单类型的总行数。都放到自己的栏目里
比如我想看;
供应商1,10 NB订单,100 NB订单行,0 ZNBS订单,0 ZNBS订单行,5 ZCSO订单,15 ZCSO订单行,15总订单,115总订单行
如果我需要澄清什么,请指出。我应该注意到,我更喜欢在一个单一的SQL查询,我可以管理它在一个单独的查询的基础上为每一个订单类型使用的WHERE子句。

lqfhib0f

lqfhib0f1#

经过反复试验,谷歌搜索等,我终于到了那里。

SELECT 
  lifnr,
  COUNT(DISTINCT (CASE WHEN e1.bsart = 'NB' THEN e1.ebeln ELSE NULL END)) Schedule_Orders,
  COUNT(CASE WHEN e1.bsart = 'NB' THEN e1.ebeln ELSE NULL END) Schedule_Order_Lines,
  COUNT(DISTINCT (CASE WHEN e1.bsart = 'ZNBS' THEN e1.ebeln ELSE NULL END)) Store_Orders,
  COUNT(CASE WHEN e1.bsart = 'ZNBS' THEN e1.ebeln ELSE NULL END) Store_Order_Lines,
  COUNT(DISTINCT (CASE WHEN e1.bsart = 'ZCSO' THEN e1.ebeln ELSE NULL END)) Third_Party,
  COUNT(CASE WHEN e1.bsart = 'ZCSO' THEN e1.ebeln ELSE NULL END) Third_Party_Lines,
  COUNT(DISTINCT (CASE WHEN e1.bsart NOT IN ('ZCSO', 'NB', 'ZNBS' ) THEN e1.ebeln ELSE NULL END)) Other_Orders,
  COUNT(CASE WHEN e1.bsart NOT IN ('ZCSO', 'NB', 'ZNBS') THEN e1.ebeln ELSE NULL END) Other_Order_Lines,
  COUNT(DISTINCT(e1.ebeln)) Total_Orders,
  COUNT(e1.ebeln) Total_Order_Lines
FROM saprpe.ekko e1
LEFT JOIN saprpe.ekpo p1
ON e1.ebeln = p1.ebeln
WHERE e1.aedat BETWEEN '20130701' AND '20140701'
GROUP BY lifnr

字符串
JOIN最初是让我的头计数与行计数相同,因为表之间的关系…添加DISTINCT到我的标题计数中,并为行计数使用案例,使我能够对这些订单类型进行计数。

相关问题