SQL Server 2014 - 如何获取最大事务代码的金额



我有三个表 我加入以获得我需要的结果

  1. 账户表
  2. 联系人表
  3. 金融
  4. 交易的金融交易表

使用以下代码,我得到了帐号,全名,转码,TransNo和TransactionDate,没有错误。但是现在,我想知道该列表中每种交易类型的金额。但我似乎得到了多行。我添加了额外的代码,但注释掉了这几行以显示我要添加的内容。

我需要在"分组依据"部分添加什么?我尝试添加TransNo,BusinessDay,然后添加TransAmt。但是我得到了多行。我真的只是想展示那个TransNo的TransAmt。

到目前为止我的代码:

SELECT A.AccountNumber
      ,C.FirstName + ' ' + C.LastName Full_Name
      ,F.TransCode
      --,F.TransAmt
      ,MAX(TransNo)TransNo
      ,Cast(Max(BusinessDay) as Date) TransactionDate
FROM FinTrans F
INNER JOIN Account A ON F.AccounttID = A.AccountId
INNER JOIN Contact C ON F.AccountID = C.AccountId
WHERE F.TransCode IN ('Payment', 'Adjustment')
  AND F.AccountID IN (12345, 23456, 34567, 45678)
group by AccountNumber, FirstName, LastName, F.TransCode --, TransAmt
ORDER BY AccountNumber,TransactionDate

编辑:添加表示例数据结构

Account Table Fields (A):
---------------------
AccountId
AccountNumber
Contact Table Fields (C):
---------------------
AccountId
FirstName
LastName
FinTrans Table fields (F):
------------------------
AccountId
TransCode
TransNo
TransAmt
BusinessDay

**A.AccountId = C.AccountId = F.AccountId**

FinTrans Table Data (F):
---------------------------------------------------
AccountId|TransCode |TransNo |TransAmt|BusinessDay|
--------------------------------------------------
12345    |Adjustment|A123456 |  545.26| 2018-04-11|
---------------------------------------------------
12345    |Payment   |P234567 |  125.14| 2018-04-10|
---------------------------------------------------
12345    |Payment   |P234566 |   99.26| 2018-04-08|
---------------------------------------------------
12345    |Adjustment|A356877 |   12.98| 2018-04-06|
---------------------------------------------------

预期成果:

-------------------------------------------------------------------------
AccountNumber|Full_Name      |TransCode | TransAmt|TransNo  |BusinessDay|
-------------------------------------------------------------------------
A12345       |John Doe       |Adjustment|   545.26|A123456  | 2018-04-11|
-------------------------------------------------------------------------
A12345       |John Doe       |Payment   |   125.14|P234567  | 2018-04-10|
-------------------------------------------------------------------------

试试这个:

选择 A.帐号 ,C.名字 + ' ' + C.姓氏 Full_Name,T.TransCode ,F.TransAmt ,T.TransNo ,T.交易日期

从(选择最大(转换号(

转换号,投射(最大(工作日(作为日期( 交易日期、账户 ID、转码 来自 FinTrans 的转码 其中 转码 在 ("付款"、"调整"(和帐户 ID 中的 (12345, 23456, 34567, 45678(

按帐户 ID、转码分组(T

内部连接 FinTrans F ON T.ACCOUNTID = F.ACCOUNTId and T.TransNo=F.TransNo
内部联接 帐户 A 在 t.帐户 ID 上 = A.帐户 ID 内部联接 联系人 C 上的 T.帐户 ID = C.帐户ID

您是否尝试过将该列添加到交易值中?SUM(F.TransAmt(

看:

SELEC Name, Date, Value FROM x

返回

Jean 19-APR-2018 10
Jean 19-APR-2018 20

SELEC Name, Date, SUM(Value) FROM x GROUP BY Name

会回来

Jean 19-APR-2018 30

最新更新