1

我試圖跟蹤我們在ERP軟件中的一些採購。 總之,我想知道,如果我們對某事物的一個月前支付一個價格,這個月不同的價格,它應該返回2採購訂單,股票代碼,價格,日期等如何在結果集中顯示價格差異(採購訂單定價)

我的代碼

select DISTINCT(MStockCode), PurchaseOrder, MPrice, MOrigDueDate from PorMasterDetail 
where MStockCode <>'' 
and YEAR(MOrigDueDate) = YEAR(GETDATE()) 
and month(MOrigDueDate) = month(GETDATE()) 
AND MPrice >'0' 
ORDER BY MStockCode ASC 

當我把它放在Sql Reporting Services中時,它給出了一個有效的輸出(如下) 它顯示了所有的StockCodes,與下面的採購訂單分組,支付的價格和日期。

* 650-1757 $ 1,554.00
323639 $ 518.00 2014年4月12日
323784 $ 518.00 22/12/2014
323787 $ 518.00 22/12/2014

0075-018 $ 175.33
323427 $ 59.04 3 /二千零十四分之十二
323498 $ 59.04 2014年3月12日
323547 $ 57.25 17/12/2014

0075-042 $ 766.56
323 456 $ 389.17 2014年3月12日
323597 $ 377.39 17/12/2014

0075-050 ​​$ 11.55
323476 $ 11.55 2014年3月12日

0075-210 $ 19.50
323328 $ 9.75 2014年3月12日
323417 $ 9.75 2014年3月12日

在一個理想的輸出,它只會顯示下面的,因爲這些有不同的價格

0075-018 $ 175.33
323427 $ 59.04 2014年3月12日
323498 $ 59.04 2014年3月12日
323547 $ 57.25 17/12/2014

0075-042 $ 766.56
323456 $ 389.17 2014年3月12日
323597 $ 377.39 17/12/2014

將它放在子查詢中,還是在SSRS中進行改進會是最好的嗎?

任何幫助將不勝感激。

+0

預期輸出是不明確 – 2014-12-19 05:17:55

+0

我想有輸出,只是,我們已經購買了有不同的進價(mprice)的StockCodes – Rakesh 2014-12-19 05:30:48

+0

仍是不明確的更新表預期的輸出格式 – 2014-12-19 05:31:54

回答

0

我在這個例子中使用SQL Server 2008。

在這個問題中,你說你對兩個月感興趣,但是在查詢中你只看當前月份而且效率很低。因此,我明確添加了兩個參數,用於定義您感興趣的日期範圍。

CTE_Changed獲取MStockCode的列表,其中價格在給定的日期範圍內(包括)發生了變化。然後,您只需檢索找到的所有必要詳細信息MStockCode即可。

我假定MPrice列具有money類型,而不是一個char類型,所以我改變比較> 0代替> '0'

DECLARE @ParamStartDate date = '2014-11-01'; 
DECLARE @ParamEndDate date = '2014-12-31'; 

WITH 
CTE_Changed 
AS 
(
    SELECT 
     MStockCode 
    FROM 
     PorMasterDetail 
    WHERE 
     MStockCode <> '' 
     AND MOrigDueDate >= @ParamStartDate 
     AND MOrigDueDate <= @ParamEndDate 
     AND MPrice > 0 
    GROUP BY 
     MStockCode 
    HAVING 
     MIN(MPrice) <> MAX(MPrice) 
) 
SELECT 
    PorMasterDetail.MStockCode 
    ,PorMasterDetail.PurchaseOrder 
    ,PorMasterDetail.MPrice 
    ,PorMasterDetail.MOrigDueDate 
FROM 
    CTE_Changed 
    INNER JOIN PorMasterDetail ON PorMasterDetail.MStockCode = CTE_Changed.MStockCode 
ORDER BY PorMasterDetail.MStockCode 
+0

感謝您的迴應,您已經指出我朝着正確的方向,但是使用您的代碼Msg 102,Level 15,State 1,Line 29 '='附近的語法不正確。 – Rakesh 2014-12-21 11:26:14

+0

好吧。您沒有提供腳本來重新創建數據模式和示例數據。所以,我寫了矇住眼睛的查詢。你不能指望人們編寫語法正確的代碼,而不能編譯和運行它。無論如何,我編輯了我的問題,我想我已經修復了這個語法錯誤。請再試一次。 – 2014-12-21 11:51:48

+0

這很有幫助,只是讓你知道。感謝您的幫助 – Rakesh 2014-12-21 21:30:54

相關問題