簡體   English   中英

有沒有辦法將來自不同表的一些數據連接到 mssql 中的查詢中

[英]is there a way to join some data from different tables into a query in mssql

我有兩個表正在處理。 庫存_In 表和Purchase_Return 表。

 Stock in

Invoice No | Product Code | Price | Quantity | Amount | Discount | Total Amount
 In-0001   | PR-0001      | 900   | 30       |22500   |0.00      |22500
 In-0001   | PR-0002      | 250   | 30       |12500   |0.00      |12500
 In-0002   | PR-0003      | 350   | 30       |10500   |1050      |9450
 In-0002   | Pr-0004      | 400   | 5        |2000    |0.00      |2000

Purchase Return

Invoice No | Product Code | Price | Quantity | Amount | Discount |Total Amount
 In-0001   | PR-0004      | 400   | 2        |800     |0.00      |800

現在,這就是我在執行查詢時想要的,首先,庫存表必須檢查采購退貨中是否有發票編號。 如果是,那么我想得到下面的結果

Invoice No | Product Code | Price | Quantity | Amount | Discount | Total Amount
 In-0001   | PR-0001      | 900   | 30       |22500   |0.00      |22500
 In-0001   | PR-0002      | 250   | 30       |12500   |0.00      |12500
 In-0002   | PR-0003      | 350   | 30       |10500   |1050      |9450
 In-0002   | Pr-0004      | 400   | 2        |800     |0.00      |800

如果沒有,那么我想得到下面的結果

Invoice No | Product Code | Price | Quantity | Amount | Discount | Total Amount
 In-0001   | PR-0001      | 900   | 30       |22500   |0.00      |22500
 In-0001   | PR-0002      | 250   | 30       |12500   |0.00      |12500
 In-0002   | PR-0003      | 350   | 30       |10500   |1050      |9450
 In-0002   | Pr-0004      | 400   | 5        |2000    |0.00      |2000

所以我需要寫什么查詢來實現這一點,已經嘗試了很多查詢,但仍然沒有得到它所寫的很少是這個

if exists (select Stock_In.Invoice_No from Stock_In,Purchase_Return where Stock_In.Invoice_No = Purchase_Return.Invoice_No)
begin
SELECT distinct Stock_In.Invoice_No,  stock_in.Product_Code, Stock_In.Price, 
        Stock_In.Quantity, Purchase_Return.Amount, Purchase_Return.Discount_Amount, Purchase_Return.Total_Amount
        FROM  Stock_In full outer join Purchase_Return on  Purchase_Return.Invoice_No =  Stock_in.Invoice_No 
End
else
begin
SELECT distinct Stock_In.Invoice_No,  stock_in.Product_Code, Stock_In.Price, 
       Stock_In.Quantity, Purchase_Return.Amount, Purchase_Return.Discount_Amount, Purchase_Return.Total_Amount
       FROM  Stock_In full outer join Purchase_Return on  Purchase_Return.Invoice_No =  Stock_in.Invoice_No 
end

這是上面查詢的結果

Invoice No | Product Code | Price | Quantity | Amount | Discount | Total_Amount
In-0001      PR-0001        900     25          Null     Null       NUll
IN-0001      PR-0002        250     50          Null     Null       NUll
IN-0002      PR-0003        350     30          2000     0.00       800
IN-0002      PR-0004        400     2           2000     0.00       800

誰能告訴我上面的查詢缺少什么

你不只是在LEFT JOInISNULL / COALESCE嗎?

SELECT InvoiceNo,
       ProductCode,
       Price,
       ISNULL(PR.Quantity,SI.Quantity) AS Quanity,
       ISNULL(PR.Amount,SI.mount) AS Amount,
       ISNULL(PR.Discount,SI.Discount) AS Discount,
       ISNULL(PR.TotalAmount,SI.TotalAmount) AS TotalAmount
FROM dbo.StockIn SI
     LEFT JOIN dbo.PurchaseReturn PR ON SI.ProductCode = PR.ProductCode;

您可以通過 SQL Joins 獲得您想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM