-1

我有两个表:

  1. 项目清单

收据

我已经写了查询,但是添加了一些金额,因为它在第二个表中找到

1)销售表

Create Table Sells(
        ID int,
        Invone varchar (30),
        InvDate DateTime ,
        Year varchar (15),
        Type varchar (10) ,
        Terms varchar (20) ,
        Days int ,
        DueDate DateTime,
        Pieces int ,
        Carats Real ,
        Price Real ,
        GrossAmt Real ,
        Discount1 Real ,
        DisAmt1 Real ,
        Discount2 Real,
        DisAmt2 Real ,
        FinalAmt Real,
        Party varchar (100), 
        Party_ID int,
        Person varchar (100),
        Shape varchar (30),
        Quality varchar (30),
        StockId int,
        SalesExe varchar (50),
        Remarks varchar (200), 
        CreatedDate DateTime,
        ModifiedDate DateTime,
        Username varchar (50))

2)收据表:

Create Table Receipt (
        ID int ,
        Invone varchar (30),
        RDate DateTime,
        Year varchar (15),
        Type varchar (10),
        HKD Real,
        Rate Real,
        ShortAmt Real,
        RecievedAmt Real,
        TotalRecievedAmt Real,
        FinalAmt Real,
        Party varchar (100),
        Party_ID int,
        Remarks varchar (200),
        CreatedDate DateTime,
        ModifiedDate DateTime,
        Username varchar (50)
        )

这是我的查询:


    选择 s.Invone,s.InvDate,s.Type,s.year,s.Terms,s.DueDate,s.Party,s.Party_ID,sum(s.Pieces) A​​S TotalPieces,
     round(sum(s.Carats), 3) AS TotalCarats, round(sum(s.GrossAmt), 2) AS TotalGrossAmt, round(sum(s.DisAmt1), 2) AS TotalDis1,
      round(sum(s.DisAmt2), 2) AS TotalDis2, round(sum(s.FinalAmt), 2) AS TotalFinalAmt, isnull(round(sum(HKD), 2), 0) AS TotalHKD,
       isnull(round(rate, 2), 0) AS Rate, isnull(round(sum(ShortAmt), 2), 0) AS TotalShort,isnull(round(sum(RecievedAmt), 2), 0) AS RecievedAmt,
        isnull(round(sum(TotalRecievedAmt), 2), 0) AS TotalRecievedAmt, round(sum(s.FinalAmt) - isnull(sum(TotalRecievedAmt), 0), 2) AS 余额

          从卖 s
     left join Recipt r on s.Invone = r.Invone WHERE s.Party = 'Buyer'
     按 s.Invone,s.InvDate,s.Party,s.Party_ID,s.Type,s.Year,s.Terms,s.DueDate,rate 分组
     有 (sum(s.FinalAmt) - sum(isnull(TotalRecievedAmt, 0))) 0
     按 s.InvDate、s.Invone 排序

这是我得到 的输出1输出图像

我要求像 Invone 这样的输出应该只来一次。并且 TotalPeices、TotalCarats、TotalGrossAmt、TotalDis1、TotalDis2、TotalFinalAmt 不应添加 2 次或 3 次。

如果我有 Invone 没有。15 两次在销售表和 3 次 15 号收据。部分付款。然后在输出 TotalPeices、TotalCarats、TotalGrossAmt、TotalDis1、TotalDis2、TotalFinalAmt 不应添加 3 次。它应该只显示来自销售表的 TotalPeices、TotalCarats、TotalGrossAmt、TotalDis1、TotalDis2、TotalFinalAmt 的总和。从收据表中应显示 TotalHKD、TotalShort、RecievedAmt、TotalRecievedAmt 的总和

4

1 回答 1

0

我得到了解决方案

    选择 S.Invone,S.InvDate,S.Type,S.Year,S.Terms,S.DueDate,S.Party,S.Party_ID,S.TotalPieces,S.TotalCarats,S.TotalGrossAmt,S.TotalDis1,S .TotalDis2,S.TotalFinalAmt,isnull(R.TotalHKD,0) AS TotalHKD,isnull(R.Rate,0) AS Rate,isnull(R.TotalShort,0) AS TotalShort,isnull(R.RecievedAmt,0) AS RecievedAmt ,isnull(R.TotalRecievedAmt,0) AS TotalRecievedAmt,(round(S.TotalFinalAmt - isnull(R.TotalRecievedAmt, 0), 2)) AS 余额来自
    (select Invone, isnull(round(sum(HKD), 2), 0) AS TotalHKD,isnull(round(rate, 2), 0) AS Rate, isnull(round(sum(ShortAmt), 2), 0) AS TotalShort,isnull(round(sum(RecievedAmt), 2), 0) AS RecievedAmt,
        isnull(round(sum(TotalRecievedAmt), 2), 0) AS TotalRecievedAmt 来自 Recipt
    按 Invone、Rate) 分组为 R
    右外连接
    (select Invone,InvDate,Type,Year,Terms,DueDate,Party,Party_ID,sum(Pieces)as TotalPieces, round(sum(Carats), 3) AS TotalCarats, round(sum(GrossAmt), 2) AS TotalGrossAmt, round (sum(DisAmt1), 2) 作为 TotalDis1,
      round(sum(DisAmt2), 2) AS TotalDis2, round(sum(FinalAmt), 2) AS TotalFinalAmt 来自 Sells
    按 Invone,InvDate,Type,Year,Terms,DueDate,Party,Party_ID 分组为 S  
     在 S.Invone=R.Invone
    WHERE S.TotalFinalAmt-isnull(R.TotalRecievedAmt,0) 0

于 2016-03-31T08:41:57.010 回答