【问题标题】:SQL Server - Master / Detail - get extract exact detail item matchSQL Server - Master / Detail - 获取提取精确的详细项目匹配
【发布时间】:2017-04-01 22:09:18
【问题描述】:

我需要帮助从两个表中提取精确的项目匹配。我想从 Detail Table 中找到 Temp Detail 和 Master 和 Temp Master itemQty 中存在的所有订单是相同的。

示例:在这种情况下,我需要所有 ItemQty 为 3 且明细表具有完全相同的 temp Detail 值的订单的 master.Amount 总和。

大师

OrderId|      Amount   | ItemQty |Status
------------------------------------------
125    |       36.75   |    3    |  A    |
------------------------------------------
128    |       11.95   |    5    |  A    |
------------------------------------------

详情包含大量订单详情

------------------------------------------
OrderId|  ItemId    |  Qty  | Price      |
------------------------------------------
125    |     12345 |  1   |  11.00      |
------------------------------------------
125    |     23456 |  1   |  12.75      |
------------------------------------------
125    |     34567 |  1   |  13.00      |
------------------------------------------

临时工

------------------------------------------
|OrderId|      Amount   | ItemQty |Status
------------------------------------------
|9999   |       36.75   |    3    |  A   |
------------------------------------------

温度详情

------------------------------------------
|OrderId |  ItemId  |  Qty | Price       |
------------------------------------------
| 9999   |   12345 |    1 |   11.00      |
------------------------------------------
| 9999   |   23456 |    1 |   12.75      |
------------------------------------------
| 9999   |   34567 |    1 |   13.00      |
------------------------------------------

提前谢谢你

【问题讨论】:

  • 谢谢 John Cappelletti,我不知道如何格式化。
  • 不用担心,以后只需突出显示所需的文本并单击 {} 按钮 :)

标签: sql sql-server database relational-database database-administration


【解决方案1】:

你可以试试这样的

select m.OrderId, sum(m.amount)
from master m
join detail d
on m.OrderId = d.OrderId
join tempDetail td
on m.OrderId = td.OrderId
where m.ItemQty = 3
group by m.OrderId
having sum(d.Qty * d.Price) = sum(td.Qty * td.Price)

【讨论】:

  • 嗨 Stefano,谢谢,问题是 temp-Master 和 Master 有不同的订单 ID,我需要两个表的详细记录相同,无论两个 master 有不同的订单 ID 或金额。
  • 好的,知道了。一个问题:在您的示例中,明细表上的数量和数量列与主表记录上的值完全匹配(如 36.75 = 11 + 12.75 + 13)。总是这样吗?
【解决方案2】:

我的最佳猜测:

select Masterr.OrderId,
       sum(Masterr.Amount)
  from Masterr
 where Masterr.ItemQty = 3
   and exists(select *
                from Detail
                join TempMaster on TempMaster.ItemQty = Masterr.ItemQty
                join TempDetail on TempDetail.OrderId = TempMaster.OrderId
               where Detail.OrderId = Masterr.OrderId
                 and TempDetail.ItemId  = Detail.ItemId
                 and TempDetail.Qty     = Detail.Qty
                 and TempDetail.Price   = Detail.Price)
 group by Masterr.OrderId;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2022-01-12
    • 2021-11-11
    • 2011-03-03
    • 2021-09-08
    • 2016-09-13
    相关资源
    最近更新 更多