2013-03-01 157 views
0

我有多個條件明智的存儲過程,我想結果集合併成單一的程序......合併多個結果

ALTER PROCEDURE [dbo].[usp_TotalReceivedUnits_Country] 
@ContractCode NVARCHAR (20), 
@CountryCode NVARCHAR (10), 
@Years NVARCHAR(1000) 
AS 
BEGIN 
     SELECT ISNULL(SUM(S.NettoWeight), 0) TotalNettoWeight, COUNT(S.ShipmentID) Loads, ReceivalDateYear = YEAR(S.ReceivalDate) 
     FROM Shipment S 
     WHERE S.ContractCode = @ContractCode AND 
       S.[OrigCountryCode] = @CountryCode AND 
       S.ClosedYN = 0 AND 
       S.Shipped = 1 AND 
       S.DeletedYN = 0 AND 
       S.OutInbound = 2 AND 
       YEAR(S.ReceivalDate) IN (SELECT Data FROM dbo.fnSplitString(@Years, ',')) 
     GROUP BY YEAR(S.ReceivalDate) 
END 
GO 

ALTER PROCEDURE [dbo].[usp_TotalProcessedUnits_Country] 
@ContractCode NVARCHAR (20), 
@CountryCode NVARCHAR (10), 
@Years NVARCHAR(1000) 
AS 
BEGIN 
    SELECT ISNULL(SUM(S.NettoWeight), 0) TotalNettoWeight, COUNT(S.ShipmentID) Loads, ReceivalDateYear = YEAR(S.ReceivalDate) 
    FROM Shipment S with (nolock) 
    WHERE S.ContractCode = @ContractCode AND 
      S.OrigCountryCode = @CountryCode AND 
      S.ClosedYN = 1 AND 
      S.Shipped = 1 AND 
      S.FinanceDetailsYN = 0 AND 
      S.DeletedYN = 0 AND 
      S.OutInbound = 2 AND 
      YEAR(S.ReceivalDate) IN (SELECT Data FROM dbo.fnSplitString(@Years, ',')) 
    GROUP BY YEAR(S.ReceivalDate) 
END 
GO 

以上兩種方法都用同樣的處理結果數量和接收到的總結,但我怎麼能結合他們到一個具有多個條件的查詢?

回答

0

如果我正確理解你的問題,你應該能夠輸出加載到臨時表,然後選擇:

CREATE TABLE #out1(TotalNettoWeight INT, Loads INT, ReceivalDateYear DATETIME2); 
CREATE TABLE #out2(TotalNettoWeight INT, Loads INT, ReceivalDateYear DATETIME2); 
GO 

INSERT #out1 
EXEC [dbo].[usp_TotalReceivedUnits_Country] 123,6,10; 

INSERT #out2 
EXEC [dbo].[usp_TotalProcessedUnits_Country] 123,6,10; 
GO 

SELECT * FROM #out1 
UNION 
SELECT * FROM #out2 
GO 

DROP TABLE #out1; 
DROP TABLE #out2; 
GO