0

我希望我的表中的价格总和取决于其他表中的“CorpCode”,其中“InvoiceDate”在上周与 Max(InvoiceDate)LastInvoiceDate 之间

我的桌子设计是:

T1:
    CorpCode  AuthorNo
      C1         A23
      C1         A24
      C1         A25
      C1         A27
      C2         A30
      C2         A43
      C2         A55
      C3         A65
      C3         A66
      C3         A78
T2:
     AuthorNo   Price  InvoiceDate
       A23       145    2019-08-01
       A24       132    2019-08-02
       A25       140    2019-08-10
       A27       125    2019-08-14
       A30       115    2019-08-19
       A43       110    2019-08-21
       A55       100    2019-08-25
       A65       111    2019-09-23
       A66       133    2019-09-12
       A78       54     2019-09-10
Result:
     CorpCode    SumPrice
        C1          265
        C2          325
        C3          111

4

2 回答 2

1

检查以下选项 -

你可以在这里查看演示

SELECT A.CorpCode,SUM(C.Price) SumPrice
FROM
(
    SELECT T1.CorpCode, DATEADD(DD,-7,MAX(InvoiceDate)) MX_DATE
    -- I have deduct 7 days for a week. 
    -- But check what you exactly need.
    FROM T1 INNER JOIN T2 ON T1.AuthorNo = T2.AuthorNo
    GROUP BY T1.CorpCode
)A
INNER JOIN T1 B ON A.CorpCode = B.CorpCode
INNER JOIN T2 C ON B.AuthorNo = C.AuthorNo AND C.InvoiceDate >= A.MX_DATE
GROUP BY A.CorpCode

输出是-

CorpCode    SumPrice
C1          265
C2          325
C3          111
于 2019-09-08T11:08:11.417 回答
1

您可以通过多种方式做到这一点。IE:

with t (CorpCode, Price, days) as
(
select t1.CorpCode, t2.Price,  
  datediff(d, invoiceDate, 
  max(InvoiceDate) over (Partition by t1.CorpCode))
from t1 
inner join t2 on t1.AuthorNo = t2.AuthorNo
)
select CorpCode, Sum(Price) as TotPrice
from t
where days <= 7
group by CorpCode;
于 2019-09-08T11:12:32.523 回答