用友U8取两个账套区间采购入库单的首末次单价,不区分供应商的平均单价

--用友U8取两个账套区间采购入库单的第一次、最后一次原币含税单价,不区分供应商的平均单价

ALTER PROCEDURE [dbo].[P_Quick_RdPrice]
    @StartTime DATETIME,
    @EndTime DATETIME
--SET @StartTime = '2023-01-01';
--SET @EndTime = '2023-08-31';
AS
SELECT TempAll.cInvCode,
       Inventory.cInvName,
       Inventory.cInvStd,
       FristPrice.cVenName AS FristVenName,
       FristPrice.cPOID AS FristPoId,
       FristPrice.dDate AS FristDate,
       FristPrice.iOriTaxCost AS FristPrice,
       FristPrice.cMaker AS FristMaker,
       LastPrice.cVenName AS LastVenName,
       LastPrice.cPOID AS LastPoId,
       LastPrice.dDate AS LastDate,
       LastPrice.iOriTaxCost AS LastPrice,
       LastPrice.cMaker AS LastMaker,
       TempC.AvgPrice
FROM
(
    SELECT DISTINCT
           (cIn.cInvCode) AS cInvCode
    FROM
    (
        SELECT rdrecords01.cInvCode
        FROM dbo.RdRecord01
            JOIN dbo.rdrecords01
                ON rdrecords01.ID = RdRecord01.ID
        WHERE dDate
              BETWEEN @StartTime AND @EndTime
              AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
              AND RdRecord01.cHandler IS NOT NULL
              AND RdRecord01.cRdCode = '101'
              AND rdrecords01.cPOID NOT LIKE 'CD%'
        UNION ALL
        SELECT rdrecords01.cInvCode
        FROM UFDATA_004_2020.dbo.RdRecord01
            JOIN UFDATA_004_2020.dbo.rdrecords01
                ON rdrecords01.ID = RdRecord01.ID
        WHERE dDate
              BETWEEN @StartTime AND @EndTime
              AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
              AND RdRecord01.cHandler IS NOT NULL
              AND RdRecord01.cRdCode = '101'
              AND rdrecords01.cPOID NOT LIKE 'CD%'
    ) cIn
) TempAll
    LEFT JOIN dbo.Inventory
        ON Inventory.cInvCode = TempAll.cInvCode
    LEFT JOIN
    (
        --第一次入库价格
        SELECT *
        FROM
        (
            SELECT Temp.dDate,
                   Temp.cVenName,
                   Temp.cInvCode,
                   Temp.iOriTaxCost,
                   --Temp.iPOsID,
                   Temp.cMaker,
                   Temp.cPOID,
                   ROW_NUMBER() OVER (PARTITION BY Temp.cInvCode ORDER BY Temp.dDate ASC) AS RowId
            FROM
            (
                SELECT RdRecord01.dDate,
                       RdRecord01.dnmaketime,
                       RdRecord01.cVenCode,
                       (
                           SELECT cVenName FROM dbo.Vendor WHERE cVenCode = RdRecord01.cVenCode
                       ) AS cVenName,
                       rdrecords01.cInvCode,
                       (
                           SELECT cMaker
                           FROM dbo.PO_Pomain
                           WHERE dbo.PO_Pomain.cPOID = rdrecords01.cPOID
                       ) AS cMaker,            --采购订单制单人
                       rdrecords01.cPOID,      --采购订单号
                                               --rdrecords01.iPOsID,
                                               --(
                                               --    SELECT PO_Pomain.cMaker
                                               --    FROM dbo.PO_Pomain
                                               --        JOIN dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cMaker,            --采购订单制单人
                                               --(
                                               --    SELECT PO_Pomain.cPOID
                                               --    FROM dbo.PO_Pomain
                                               --        JOIN dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cPOID,             --采购订单号
                       rdrecords01.iOriTaxCost --原币含税单价
                FROM dbo.RdRecord01
                    JOIN dbo.rdrecords01
                        ON rdrecords01.ID = RdRecord01.ID
                WHERE dDate
                      BETWEEN @StartTime AND @EndTime
                      AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                      AND RdRecord01.cHandler IS NOT NULL
                      AND RdRecord01.cRdCode = '101'
                      AND rdrecords01.cPOID NOT LIKE 'CD%'
                UNION ALL
                SELECT RdRecord01.dDate,
                       RdRecord01.dnmaketime,
                       RdRecord01.cVenCode,
                       (
                           SELECT cVenName
                           FROM UFDATA_004_2020.dbo.Vendor
                           WHERE cVenCode = RdRecord01.cVenCode
                       ) AS cVenName,
                       rdrecords01.cInvCode,
                       (
                           SELECT cMaker
                           FROM UFDATA_004_2020.dbo.PO_Pomain
                           WHERE PO_Pomain.cPOID = rdrecords01.cPOID
                       ) AS cMaker,            --采购订单制单人
                       rdrecords01.cPOID,      --采购订单号
                                               --rdrecords01.iPOsID,
                                               --(
                                               --    SELECT PO_Pomain.cMaker
                                               --    FROM UFDATA_004_2020.dbo.PO_Pomain
                                               --        JOIN UFDATA_004_2020.dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cMaker,            --采购订单制单人
                                               --(
                                               --    SELECT PO_Pomain.cPOID
                                               --    FROM UFDATA_004_2020.dbo.PO_Pomain
                                               --        JOIN UFDATA_004_2020.dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cPOID,             --采购订单号
                       rdrecords01.iOriTaxCost --原币含税单价
                FROM UFDATA_004_2020.dbo.RdRecord01
                    JOIN UFDATA_004_2020.dbo.rdrecords01
                        ON rdrecords01.ID = RdRecord01.ID
                WHERE dDate
                      BETWEEN @StartTime AND @EndTime
                      AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                      AND RdRecord01.cHandler IS NOT NULL
                      AND RdRecord01.cRdCode = '101'
                      AND rdrecords01.cPOID NOT LIKE 'CD%'
            ) Temp
        ) T
        WHERE T.RowId = 1
    ) FristPrice
        ON FristPrice.cInvCode = TempAll.cInvCode
    --最后一次入库价格
    LEFT JOIN
    (
        SELECT *
        FROM
        (
            SELECT Temp.dDate,
                   Temp.cVenName,
                   Temp.cInvCode,
                   Temp.iOriTaxCost,
                   --Temp.iPOsID,
                   Temp.cMaker,
                   Temp.cPOID,
                   ROW_NUMBER() OVER (PARTITION BY Temp.cInvCode ORDER BY Temp.dDate DESC) AS RowId
            FROM
            (
                SELECT RdRecord01.dDate,
                       RdRecord01.dnmaketime,
                       RdRecord01.cVenCode,
                       (
                           SELECT cVenName FROM dbo.Vendor WHERE cVenCode = RdRecord01.cVenCode
                       ) AS cVenName,
                       rdrecords01.cInvCode,
                       (
                           SELECT cMaker
                           FROM dbo.PO_Pomain
                           WHERE dbo.PO_Pomain.cPOID = rdrecords01.cPOID
                       ) AS cMaker,            --采购订单制单人
                       rdrecords01.cPOID,      --采购订单号
                                               --rdrecords01.iPOsID,
                                               --(
                                               --    SELECT PO_Pomain.cMaker
                                               --    FROM dbo.PO_Pomain
                                               --        JOIN dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cMaker,            --采购订单制单人
                                               --(
                                               --    SELECT PO_Pomain.cPOID
                                               --    FROM dbo.PO_Pomain
                                               --        JOIN dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cPOID,             --采购订单号
                       rdrecords01.iOriTaxCost --原币含税单价
                FROM dbo.RdRecord01
                    JOIN dbo.rdrecords01
                        ON rdrecords01.ID = RdRecord01.ID
                WHERE dDate
                      BETWEEN @StartTime AND @EndTime
                      AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                      AND RdRecord01.cHandler IS NOT NULL
                      AND RdRecord01.cRdCode = '101'
                      AND rdrecords01.cPOID NOT LIKE 'CD%'
                UNION ALL
                SELECT RdRecord01.dDate,
                       RdRecord01.dnmaketime,
                       RdRecord01.cVenCode,
                       (
                           SELECT cVenName
                           FROM UFDATA_004_2020.dbo.Vendor
                           WHERE cVenCode = RdRecord01.cVenCode
                       ) AS cVenName,
                       rdrecords01.cInvCode,
                       (
                           SELECT cMaker
                           FROM UFDATA_004_2020.dbo.PO_Pomain
                           WHERE PO_Pomain.cPOID = rdrecords01.cPOID
                       ) AS cMaker,            --采购订单制单人
                       rdrecords01.cPOID,      --采购订单号
                                               --rdrecords01.iPOsID,
                                               --(
                                               --    SELECT PO_Pomain.cMaker
                                               --    FROM UFDATA_004_2020.dbo.PO_Pomain
                                               --        JOIN UFDATA_004_2020.dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cMaker,            --采购订单制单人
                                               --(
                                               --    SELECT PO_Pomain.cPOID
                                               --    FROM UFDATA_004_2020.dbo.PO_Pomain
                                               --        JOIN UFDATA_004_2020.dbo.PO_Podetails
                                               --            ON PO_Podetails.POID = PO_Pomain.POID
                                               --    WHERE PO_Podetails.ID = rdrecords01.iPOsID
                                               --) AS cPOID,             --采购订单号
                       rdrecords01.iOriTaxCost --原币含税单价
                FROM UFDATA_004_2020.dbo.RdRecord01
                    JOIN UFDATA_004_2020.dbo.rdrecords01
                        ON rdrecords01.ID = RdRecord01.ID
                WHERE dDate
                      BETWEEN @StartTime AND @EndTime
                      AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                      AND RdRecord01.cHandler IS NOT NULL
                      AND RdRecord01.cRdCode = '101'
                      AND rdrecords01.cPOID NOT LIKE 'CD%'
            ) Temp
        ) T
        WHERE T.RowId = 1
    ) LastPrice
        ON LastPrice.cInvCode = TempAll.cInvCode
    LEFT JOIN
    (
        SELECT TempB.cInvCode,
               SUM(TempB.iSum) / NULLIF(SUM(TempB.iQuantity), 0) AS AvgPrice
        FROM
        (
            SELECT rdrecords01.cInvCode,
                   rdrecords01.iSum,     --本币价税合计
                   rdrecords01.iQuantity --数量
            FROM dbo.RdRecord01
                JOIN dbo.rdrecords01
                    ON rdrecords01.ID = RdRecord01.ID
            WHERE dDate
                  BETWEEN @StartTime AND @EndTime
                  AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                  AND RdRecord01.cHandler IS NOT NULL
                  AND RdRecord01.cRdCode = '101'
                  AND rdrecords01.cPOID NOT LIKE 'CD%'
            UNION ALL
            SELECT rdrecords01.cInvCode,
                   rdrecords01.iSum,     --本币价税合计
                   rdrecords01.iQuantity --数量
            FROM UFDATA_004_2020.dbo.RdRecord01
                JOIN UFDATA_004_2020.dbo.rdrecords01
                    ON rdrecords01.ID = RdRecord01.ID
            WHERE dDate
                  BETWEEN @StartTime AND @EndTime
                  AND RdRecord01.cVenCode NOT IN ( '02011000', '04010393', '02020145' )
                  AND RdRecord01.cHandler IS NOT NULL
                  AND RdRecord01.cRdCode = '101'
                  AND rdrecords01.cPOID NOT LIKE 'CD%'
        ) TempB GROUP BY TempB.cInvCode
    ) TempC
        ON TempC.cInvCode = TempAll.cInvCode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值