2

私はこのSQLクエリを持っています、

SELECT PaymentID, CustomerID, PaymentDate, Amount, Balance, Credit 
FROM Payment 
WHERE (PaymentDate = '2012-11-03')

また、顧客の前回の残高とクレジット フォームの最後の取引を印刷するのも好きです。
これが私の試みです。

SELECT DISTINCT TOP 1 Balance, Credit, PaymentID 
FROM Payment 
WHERE CustomerID = '??' AND PaymentID < '??'
ORDER BY PaymentID DESC

ご覧のとおり、クエリは好まれないため、これは何もしません。T-SQLまたはUNIONを使用する必要があると思いますが、実装方法がわかりません。

私が達成しようとしているこの種のアウトプット。

ここに画像の説明を入力

支払表

PaymentID   int 
CustomerID  varchar(50)
PaymentDate date
Amount  decimal(18, 2)
Balance     decimal(18, 2)
Credit  decimal(18, 2)

ノート:

これは、一人のお客様だけでなく、全てのお客様に向けたもので、販売報告書のようなものです。顧客ごとに 1 日に複数回の支払いが発生する場合があります。

4

1 に答える 1

0

これで始められるかもしれません

SELECT P1.paymentID, P1.CustomerID, P1.PaymentDate, max(PP.paymentID)
FROM Payment P1 
Join Payment PP 
  on PP.paymentID < P1.paymentID 
 and PP.CustomerID = P1.CustomerID
 and P1.PaymentDate = '2012-11-03'
GroupBy P1.paymentID, P1.CustomerID, P1.PaymentDate


not test but I think this will pull in the other data

select PC.*, PL.PaymentDate,  PL.Amount,  PL.Balance,  PL.Credit 
from 
(SELECT P1.paymentID, P1.CustomerID, P1.PaymentDate, max(PP.paymentID) as PriorPID
FROM Payment P1 
Join Payment PP 
  on PP.paymentID < P1.paymentID 
 and PP.CustomerID = P1.CustomerID
 and P1.PaymentDate = '2012-11-03'
GroupBy P1.paymentID, P1.CustomerID, P1.PaymentDate) as PC 
join Payment PL 
  on PL.paymentID = PC.PriorPID 
 and PL.CustomerID = PC.CustomerID 
于 2012-12-04T23:17:15.527 に答える