2017-05-29 168 views
1

早上好,查詢計算期初庫存,庫存,缺貨,庫存餘額在MYSQL的統一價格與調控通脹率(上升,上升,上升)

我有一個包含三個表MySQL數據庫:

  1. 產品表

enter image description here

  • stockin表
  • enter image description here

  • 缺貨表
  • enter image description here

    和我有以下查詢效果很好,它可以幫助我來生成legder report on picture 4 below:

    SELECT 
        Product.Product_Code, 
        Product.Product_Color, 
        Product.Product_Model, 
        IFNull(QtyBeginningStockIn.Qty_In, 0)-IFNull(QtyBeginningStockOut.Qty_Out, 0) QtyBeginningStock, 
        IFNull(UntyBeginningStockIn.Uprice_In, 0) UntyBeginningStock, 
        IFNull(BeginningStockIn.Amount, 0)-IFNull(BeginningStockOut.Amount, 0) BeginningStock, 
    IFNull(QtyPeriodStockIn.Qty_In, 0) QtyStockIn, 
    IFNull(UntyPeriodStockIn.Uprice_In, 0) UntyStockIn, 
    IFNull(PeriodStockIn.Amount, 0) StockIn, 
    IFNull(QtyPeriodStockOut.Qty_Out, 0) QtyStockOut, 
    IFNull(UntyPeriodStockOut.Uprice_Out, 0) UntyStockOut, 
    IFNull(PeriodStockOut.Amount, 0) StockOut, 
    IFNull(QtyBeginningStockIn.Qty_In, 0)-IFNull(QtyBeginningStockOut.Qty_Out, 0)+IFNull(QtyPeriodStockIn.Qty_In, 0)-IFNull(QtyPeriodStockOut.Qty_Out, 0) QtyStockBalance, 
    IFNull(UntyclosingStockIn.Uprice_In, 0) UntyclosingStockIn, 
    IFNull(BeginningStockIn.Amount, 0)-IFNull(BeginningStockOut.Amount, 0)+IFNull(PeriodStockIn.Amount, 0)-IFNull(PeriodStockOut.Amount, 0) StockBalance 
    FROM Product 
    LEFT JOIN 
    (
        SELECT 
        SUM(Qty_In) Qty_In, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date < '2012/01/02' 
        group by Product_Code 
    ) QtyBeginningStockIn ON QtyBeginningStockIn.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Qty_Out) Qty_Out, 
        Product_Code 
        FROM Stockout 
        WHERE StockOut_Date < '2012/01/02' 
        group by Product_Code 
    ) QtyBeginningStockOut ON QtyBeginningStockOut.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        Uprice_In, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date < '2012/01/02' 
        group by Product_Code 
    ) UntyBeginningStockIn ON UntyBeginningStockIn.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Amount) Amount, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date < '2012/01/02' 
        group by Product_Code 
    ) BeginningStockIn ON BeginningStockIn.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Amount) Amount, 
        Product_Code 
        FROM StockOut 
        WHERE StockOut_Date < '2012/01/02' 
        group by Product_Code 
    ) BeginningStockOut ON BeginningStockOut.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Qty_In) Qty_In, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31' 
        group by Product_Code 
    ) QtyPeriodStockIn ON QtyPeriodStockIn .Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        Uprice_In, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31' 
        group by Product_Code 
    ) UntyPeriodStockIn ON UntyPeriodStockIn .Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Amount) Amount, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date >= '2012/01/02' AND StockIn_Date < '2012/01/31' 
        group by Product_Code 
    ) PeriodStockIn ON PeriodStockIn .Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Qty_Out) Qty_Out, 
        Product_Code 
        FROM Stockout 
        WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31' 
        group by Product_Code 
    ) QtyPeriodStockOut ON QtyPeriodStockOut .Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        Uprice_Out, 
        Product_Code 
        FROM Stockout 
        WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31' 
        group by Product_Code 
    ) UntyPeriodStockOut ON UntyPeriodStockOut .Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        SUM(Amount) Amount, 
        Product_Code 
        FROM StockOut 
        WHERE StockOut_Date >= '2012/01/02' AND StockOut_Date < '2012/01/31' 
        group by Product_Code 
    ) PeriodStockOut ON PeriodStockOut.Product_Code = Product.Product_Code 
    LEFT JOIN 
    (
        SELECT 
        Uprice_In, 
        Product_Code 
        FROM StockIn 
        WHERE StockIn_Date < '2012/01/02' 
        group by Product_Code 
    ) UntyclosingStockIn ON UntyclosingStockIn.Product_Code = Product.Product_Code 
    
  • 總帳報告

    enter image description here

  • 我的問題是,是否有可能產生一個分類帳報告其可以通過細節顯示所有交易包括交易日期,而不是像我的報告中總結交易?我可以使用哪種查詢?謝謝

    +0

    一切皆有可能 –

    +0

    您需要提供準確的預期結果以及您試圖實現的結果。 – Shadow

    回答

    0

    這是可能的工會stockinstockout表。您也可以對不同類型的交易使用負值和正值。例如:

    (SELECT StockIn_date AS `Date`, Product_code, Qty_In AS Qty, Uprice_In AS Uprice, Qty_In*Uprice_In AS Amount, 'StockIn' AS `Type` 
    FROM stockin) 
    UNION ALL 
    (SELECT StockOut_date AS `Date`, Product_code, -Qty_Out AS Qty, Uprice_Out AS Uprice, -Qty_Out*Uprice_Out AS Amount, 'StockOut' AS `Type` 
    FROM stockout) 
    ORDER BY `Date`;