【问题标题】:Merge data(Multiple Records) from 2 tables based on a condition根据条件合并 2 个表中的数据(多条记录)
【发布时间】:2013-08-27 13:21:16
【问题描述】:

我有 3 个具有以下结构的表。

表 - 1

Cust_ID
Order_Date
Order_time
Cust_Name
Cust_Address
Order_Status
Emp_ID
Cust_Prod_Cost
Cust_Balance

表 - 2

Cust_ID
Delivered_Time
Delivered_Qty
Payment_Type
Cust_Prod_Cost
Cust_Balance
Amount_Paid
Order_Status
Emp_ID
WHID

表 - 3

Cust_ID
Order_Date
Order_time
Delivery_Time
Cust_Prod_Cost
Delivered_Qty
Payment_Type
Amt_To_Pay
Amount_Paid
Due_Amount
Order_Status
Emp_ID
WHID

现在我想在 Table2-Cust_ID=Table1.Cust_ID 和 Table2.Order_Status='0' 时将表 - 1 和 2 中的数据合并到表 -3 中。

您能帮我解决一下 SQL Server 查询吗??我尝试了很多可能的方法,但没有结果

【问题讨论】:

    标签: sql-server


    【解决方案1】:
    Insert Into Table3
    (
        Cust_ID
        Order_Date
        Order_time
        Delivery_Time
        Cust_Prod_Cost
        Delivered_Qty
        Payment_Type
        Amt_To_Pay
        Amount_Paid
        Due_Amount
        Order_Status
        Emp_ID
        WHID
    )
    Select t1.Cust_Id,
           t1.Order_Date,
           t1.Order_Time,
           t2.Delivered_Time,
           t2.Cust_Prod_Cost,
           t2.Delivered_Qty,
           t2.Payment_Type,
           Amt_To_Pay (doesn't exist in t1 or t2),
           t2.Amount_Paid,
           Due_Amount (doesn't exist in t1 or t2),
           t1.Order_Status,
           t1.Emp_ID,
           t1.WHID
    From Table1 t1
    Inner Join Table2 t2 On t2.Cust_Id = t1.Cust_Id
        And t2.Order_Status = '0'
    

    【讨论】:

    • 非常感谢 ganders...它的工作 :-)
    【解决方案2】:
    SELECT 
    A.Cust_ID,Order_Date,Order_time,Delivery_Time,Cust_Prod_Cost,
    Delivered_Qty,Payment_Type,Amt_To_Pay,Amount_Paid,
    Due_Amount,Order_Status,A.Emp_ID,WHID
    FROM TABLE1 A 
    JOIN TABLE2 B ON A.Cust_ID=B.Cust_ID AND B.Order_Status=0
    

    【讨论】:

      【解决方案3】:

      试试下面的sql:

          INSERT INTO Table3 (
                              Cust_ID
                              ,Order_Date
                              ,Order_time
                              ,Delivery_Time
                              ,Cust_Prod_Cost
                              ,Delivered_Qty, Payment_Type
                              ,Amt_To_Pay, Amount_Paid
                              ,Due_Amount
                              ,Order_Status
                              ,Emp_ID
                              ,WHID
          )
          SELECT t1.Cust_ID
                 ,t1.Order_Date
                 ,t1.Order_time
                 ,t2.Delivered_Time
                 ,t2.Cust_Prod_Cost
                ,t2.Delivered_Qty
                ,t2.Payment_Type
                ,NULL AS Amount_To_Pay
                ,t2.Amount_Paid
                ,NULL AS Due_Amount
                ,t2.Due_Amount
                ,t2.WHID  
          FORM Table1 t1 LEFT JOIN t2 ON t1.Cust_ID = t2.Cust_ID 
          WHERE t2.Order_Status = 0
      

      NULL 替换为有效值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-28
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多