繁体   English   中英

获取 Select 导致多列和单行

[英]Getting Select Result in Multiple Columns and a Single Row

下面我尝试将我的产品的子部件分为 3 列和单行。 我正在使用 4 张桌子。 STOCK40T 是我获取订单和其他信息的主表。 我从表 CUSTOM00 中获取客户名称。 表 STOCK00 中的库存名称和产品详细信息。 最后,我使用表 BOMU01T 来获取我的产品的产品树。 'BOMREC_SOURCECODE' 是 BOMU01T 中存储子部件的列。

SELECT * FROM (
SELECT  
      SL.DOCNO AS DOCUMENT_NO,
      SL.CUSTOMERCODE AS CUSTOMER_CODE,
      C0.NAME AS CUSTOMER_NAME,
      SL.CODE AS PRODUCT_CODE,
      ST.NAME AS PRODUCT_NAME,
      SL.QUANTITY AS ORDER_QUANTITY,
      SL.QT_SHIPPED AS SHIPPED_QUANTITY,
      (SL.QUANTITY-SL.QT_SHIPPED) AS OPEN_ORDER_QUANTITY,
      NVL(TO_CHAR(TO_DATE(SL.DELVRDATE,'YYYY/MM/DD'),'DD/MM/YYYY'),0) AS DELIVERY_DATE,
      (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_7)='PAINTED') AS PAINTED,
      (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_13)='RAWM-1') AS RAWM-01,
      (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_16)='RAWM-02') AS RAWM-02
      
FROM STOCK40T SL

LEFT JOIN STOCK00 ST ON TRIM(ST.CODE)=TRIM(SL.CODE)
LEFT JOIN CUSTOM00 C0 ON TRIM(C0.CODE)=TRIM(SL.CUSTOMERCODE)
LEFT JOIN BOMU01T BOM ON BOM.BOMREC_CODE=SL.CODE
LEFT JOIN STOCK00 S0 ON S0.CODE=BOM.BOMREC_SOURCECODE
              )
ORDER BY 4, 9 ASC

我现在得到这个结果。

在此处输入图像描述

我想要的应该是这样的。

在此处输入图像描述

由于我们没有样本数据,我仍然认为您可以尝试聚合以达到您想要的结果 -

SELECT DOCUMENT_NO,
       CUSTOMER_CODE,
       CUSTOMER_NAME,
       PRODUCT_CODE,
       PRODUCT_NAME,
       ORDER_QUANTITY,
       SHIPPED_QUANTITY,
       OPEN_ORDER_QUANTITY,
       DELIVERY_DATE,
       MAX(PAINTED),
       MAX(RAWM-01),
       MAX(RAWM-02)
  FROM (SELECT SL.DOCNO AS DOCUMENT_NO,
               SL.CUSTOMERCODE AS CUSTOMER_CODE,
               C0.NAME AS CUSTOMER_NAME,
               SL.CODE AS PRODUCT_CODE,
               ST.NAME AS PRODUCT_NAME,
               SL.QUANTITY AS ORDER_QUANTITY,
               SL.QT_SHIPPED AS SHIPPED_QUANTITY,
               (SL.QUANTITY-SL.QT_SHIPPED) AS OPEN_ORDER_QUANTITY,
               NVL(TO_CHAR(TO_DATE(SL.DELVRDATE,'YYYY/MM/DD'),'DD/MM/YYYY'),0) AS DELIVERY_DATE,
               (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_7)='PAINTED') AS PAINTED,
               (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_13)='RAWM-1') AS RAWM-01,
               (SELECT CODE FROM STOCK00 S0 WHERE S0.CODE=BOM.BOMREC_SOURCECODE AND TRIM(S0.GK_16)='RAWM-02') AS RAWM-02
      
          FROM STOCK40T SL
          LEFT JOIN STOCK00 ST ON TRIM(ST.CODE)=TRIM(SL.CODE)
          LEFT JOIN CUSTOM00 C0 ON TRIM(C0.CODE)=TRIM(SL.CUSTOMERCODE)
          LEFT JOIN BOMU01T BOM ON BOM.BOMREC_CODE=SL.CODE)
 GROUP BY DOCUMENT_NO,
       CUSTOMER_CODE,
       CUSTOMER_NAME,
       PRODUCT_CODE,
       PRODUCT_NAME,
       ORDER_QUANTITY,
       SHIPPED_QUANTITY,
       OPEN_ORDER_QUANTITY,
       DELIVERY_DATE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM