2013-08-27 147 views
0

我試圖在SQL中插入一個列表。我從TableName1和TableName2的JOIN查詢中得到兩個列值的列表。通過ProductId的計數,我將ProductId和Quantity插入到Table3中。 但插入失敗,因爲ProductId爲空。我從Join查詢中獲取ProductId和Quantity的兩個值,如下所示。如何將此列表插入到Table3中?在sql server 2008中插入值列表

LIST

ProductId Quantity 
56   1 
58   2 

SQL:

DECLARE @productid int 
DECLARE @quantity int 

SET @productid = SELECT A.[ProductId], 
A.[Quantity] FROM [TableName1] A 
INNER JOIN [TableName2] B 
ON A.[OrderId] = B.[OrderId] WHERE B.[CustomerId] = 1 AND A.[OrderId] = 68 


SET @quantity = SELECT 
A.[Quantity] FROM [TableName1] A 
INNER JOIN [TableName2] B 
ON A.[OrderId] = B.[OrderId] WHERE B.[CustomerId] = 1 AND A.[OrderId] = 68 


DECLARE @i int = 0 
DECLARE @pcount int = (SELECT COUNT(ProductId) FROM [TableName1] A 
INNER JOIN [TableName2] B 
ON A.[OrderId] = B.[OrderId] WHERE B.[CustomerId] = 1 AND 
A.[OrderId] = 68) 

WHILE @i <= @pcount 

BEGIN 

    SET @i = @i + 1 

    DECLARE @productname nvarchar(MAX) 
    SET @productname = (SELECT [ProductName] FROM [TableName4] WHERE [ProductId]= @productid) 


    DECLARE @PRate decimal 
    SET @PRate =(SELECT [SpecialPrice] FROM [TableName5] 
    WHERE [ProductId][email protected]) 


    DECLARE @SPrice decimal 
    SET @SPrice = @PRate * @quantity 

    INSERT INTO [Table3] 
    [ProductId],[ProductName],[Quantity],[Price],[TotalAmount]) 
    VALUES 
    (@productid,@productname,@quantity,@PRate,@SPrice) 
END 

如何我通過產品ID和數量環至表3的插入。
我的代碼在循環時出現任何錯誤?

回答

2

你可能會更好寫這是一套基於操作:

WITH pq AS 
(
    SELECT 
    A.[ProductId] 
    ,A.[Quantity] 
    ,D.[ProductName] 
    ,E.[SpecialPrice] 
    ,E.[SpecialPrice]*A.[Quantity] AS SPrice 
    FROM [TableName1] A 
    INNER JOIN [TableName2] B 
    ON A.[OrderId] = B.[OrderId] 
    INNER JOIN [TableName4] D 
    ON A.[ProductId] = D.[ProductId] 
    INNER JOIN [TableName5] E 
    ON A.[ProductId] = D.[ProductId] 
    WHERE B.[CustomerId] = 1 
    AND A.[OrderId] = 68 
) 
INSERT INTO [Table3] 
([ProductId] 
,[ProductName] 
,[Quantity] 
,[Price] 
,[TotalAmount]) 
SELECT 
[ProductId] 
,[ProductName] 
,[Quantity] 
,[SpecialPrice] 
,SPrice 
FROM pq; 
+0

哇。解決方案簡單隻更改了這一行。 INNER JOIN [TableName5] E ON A. [ProductId] = E. [ProductId]。 – kk1076

相關問題