有人可以帮助我计算sql中的行数。我有一个表格,存档,我有银行帐户和该帐户的状态。一个帐户可以拥有并且通常拥有更多记录,在我的计数中我必须使用最后一条记录,而不是之前的记录。例如:
account status
5552222 A
5552222 B
5552222 A
**5552222 B**
4445896 A
4445896 B
**4445896 A**
我必须使用大胆的人。基于此,有一个B(被阻止)和一个A(有效)帐户。我有列日期时间,可以告诉我最后一条记录是什么。我只需要查询来计算
答案 0 :(得分:0)
SELECT COUNT(*)
FROM yourTable
WHERE Status='B'
或
WHERE AccountName LIKE '%B'
编辑:OP修改问题后包含表格数据。
因此,问题是相同的帐号可能会多次出现,并且您希望依据帐户的最后状态来计算。 如果该帐户目前被屏蔽,您可以计算该帐号,而不管它之前被阻止的次数。
假设:您的表中有一个日期类型列,其中显示了插入记录(具有新状态值)的日期(或者它可能是一个标识字段,用于跟踪表中创建的记录的顺序)
查询将是:
SELECT COUNT (*)
FROM
(
SELECT DISTINCT
acNumber,
( SELECT Max(identityField_or_dateField)
FROM tableName t
WHERE t.acNumber = t2.acNumber AND Status='B')
FROM tableName t2
WHERE
( SELECT Max(identityField_or_dateField)
FROM tableName t
WHERE t.acNumber = t2.acNumber AND Status='B') IS NOT NULL
) tblAlias
很高兴帮忙!如果您觉得有帮助,请记得接受答案。
答案 1 :(得分:0)
假设您想根据帐户的最新行计算:
SELECT tab.status,
COUNT(*)
FROM tab JOIN
(
SELECT account, MAX(datetime) AS maxdate
FROM tab
GROUP BY account
) AS dt
ON tab.account = dt.account
AND tab.datetime = dt.maxtime
GROUP BY tab.Status