我有一个如下表
ID DATE ACCT TYPE AMOUNT SEQ CHK# TRC
1 6/5/2014 1234 C 10,000 1 1001
2 6/5/2014 3333 3,000 2 123 1002
3 6/5/2014 4444 5,000 3 234 1003
4 6/5/2014 5555 2,000 4 345 1004
5 6/5/2014 2345 C 3,000 1 1007
6 6/5/2014 5555 2,500 2 255 1008
7 6/5/2014 7777 500 3 277 1009
8 6/6/2014 1234 C 5,000 1 2001
9 6/6/2014 7777 3,000 2 278 2002
10 6/6/2014 8888 2,000 3 301 2003
TYPE = C的行是顺序执行的子行的父行。 父行没有CHK#,子行确实有CHK#。每 父行具有seq#= 1,子行具有序列号。 (如果它 事项)从上表中,行ID 1是行的父行 ID 2~4。子行上的AMOUNT加起来为父行 量。
使用帐户#2345查询“6/5/2014”日期的交易 金额为3,000 - 结果应为ID为6和7的行。
使用MS-SQL 2008可以进行此类查询吗?如果是的话,你能告诉我吗? 知道?
答案 0 :(得分:2)
根据您拥有的数据,您可以使用id
列查找所需的行。首先,查找具有该金额的支票的那个。查找具有相同组的后续id
。你如何定义这个群体?这很容易。取id
和seq
之间的差异。对于父行和子行,此差异是不变的。
所以,这是:
select t.*
from table t
where (t.id - t.seq) = (select t2.id - t2.seq
from table t2
where t2.type = 'C' and
t2.acct = '2345' and
t2.date = '6/5/2014'
) and
t.type is null;