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