簡體   English   中英

非唯一的 SQL 右連接

[英]SQL Right Join on Non Unique

我希望我想多了。 但我需要對一個沒有唯一鏈接的列進行求和,當我這樣做時,會將列加倍。

這是我當前的 SQL,直到我在vwBatchInData上添加連接,然后它將每條記錄加倍,實現這一目標的最佳方法是什么?

select b.fldBatchID as 'ID',SUM(bIn.fldBatchDetailsWeight)  as 'Batch In', sum(t.fldTransactionNetWeight) as 'Batch Out' , format((sum(t.fldTransactionNetWeight) / sum(bIn.fldBatchDetailsWeight)),'P2' ) as 'Yield'
    from [TRANSACTION] t 
        right join vwBatchInData bIn on bIn.fldBatchID = t.fldBatchID
        inner join Batch b on b.fldBatchID = t.fldBatchID
    where CAST(b.fldBatchDate as date) = '2020-03-04'
group by  b.fldBatchID**

vwBatchInData 表

    +------------+---------------+-----------------------+
    | fldBatchID | fldKillNumber | fldBatchDetailsWeight |
    +------------+---------------+-----------------------+
    |       2862 |        601598 | 164.40                |
    |       2862 |        601599 | 190.80                |
    |       2862 |        601596 | 195.00                |
    |       2862 |        601597 | 200.20                |
    |       2862 |        601594 | 176.60                |
    +------------+---------------+-----------------------+

交易表

+------------+------------------+-------------------------+
| fldBatchID | fldTransactionID | fldTransactionNetWeight |
+------------+------------------+-------------------------+
|       2862 |         10242352 | 16.26                   |
|       2862 |         10242353 | 22.82                   |
|       2862 |         10242362 | 18.52                   |
|       2862 |         10242363 | 21.44                   |
|       2862 |         10242364 | 20.32                   |
+------------+------------------+-------------------------+

批處理表

+------------+-------------------------+
| fldBatchID |      fldBatchDate       |
+------------+-------------------------+
|       2862 | 2020-03-04 00:00:00.000 |
+------------+-------------------------+

使用上述 snipets 所需的輸出

+------+----------+-----------+---------+
|  ID  | Batch In | Batch Out |  Yield  |
+------+----------+-----------+---------+
| 2862 | 927.00   | 90.36     | 10.76 % |
+------+----------+-----------+---------+

我認為您只想join之前聚合:

select b.fldBatchID as ID,
       (bIn.fldBatchDetailsWeight)  as batch_in,
       (t.fldTransactionNetWeight) as batch_out, 
       format(t.fldTransactionNetWeight / bIn.fldBatchDetailsWeight, 'P2' ) as Yield
    from batch b left join
         (select bin.fldBatchID, sum(fldBatchDetailsWeight) as fldBatchDetailsWeight
          from vwBatchInData bin
          group by bin.fldBatchID
         ) bin
         on bIn.fldBatchID = b.fldBatchID left join
         (select t.fldBatchID, sum(fldTransactionNetWeight) as fldTransactionNetWeight
          from transactions t
          group by t.fldBatchID
         ) bin
         on t.fldBatchID = b.fldBatchID 
    where CAST(b.fldBatchDate as date) = '2020-03-04';

暫無
暫無

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

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