我有这个演示数据库
create database testGroupfirst22;
go
use testGroupfirst22;
go
create table testTbl
(
id int primary key identity,
custnum nvarchar(50),
transDate datetime,
degree int
)
insert into testTbl
values ('ahmed', '1-1-2000', 50), ('ahmed', '1-1-2000', 500),
('ahmed', '2-1-2000', 660), ('ahmed', '2-1-2000', 666),
('ahmed', '3-1-2000', 50),
('ali', '1-1-2000', 5054), ('ali', '1-1-2000', 1500),
('ali', '1-1-2000', 66220), ('ali', '1-1-2000', 6656),
('ali', '1-1-2000', 540),
('hasan', '1-1-2000', 50), ('hasan', '1-1-2000', 50),
('hasan', '1-1-2000', 500), ('hasan', '1-1-2000', 660),
('hasan', '1-1-2000', 666), ('hasan', '1-1-2000', 50)
这是输出
我编写这段代码是为了在超过 1950 年的指定时间内获取所有交易,它的工作原理是这样的
select
custnum, sum(degree) as [all transaction]
from
testTbl
where
transdate between '1-1-2000' and '3-1-2000'
group by
custnum
having
sum(degree) > 2000
输出:
但我需要用这样的相同代码列出所有这些交易和它的历史
我相信使用子查询可能会发生这种情况,但我认为使用它会出现性能问题,我发现很多问题建议使用交叉应用和其他窗口 - 排名,但我不熟悉这些方式,我被困住了查询,我还无法找到赖特解决方案。