--学费减免 一个学期一个学生有多个减免
CREATE TABLE [jianmian] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[pid] [int] NOT NULL,--学期编号
[nid] [int] NOT NULL,--年级编号
[cid] [int] NOT NULL,--班级编号
[uid] [int] NOT NULL, --用户编号
[username] [varchar] (50) NULL,
[kemuid] [int] NULL,
[kemu] [varchar] (50) NULL,
[jine] [decimal] (18,2) NULL, --金额
[addtime] [datetime] NULL DEFAULT (getdate()),
[Del] [int] NULL,
[beizhu] [varchar] (580) NULL)ALTER TABLE [jianmian] WITH NOCHECK ADD CONSTRAINT [PK_jianmian] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jianmian] ONINSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 1,10,4,48,3448,N'王玲',4,N'工资扣除',1000.00,N'2015/1/15 9:01:23',0)
INSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 2,10,4,43,3448,N'王玲',5,N'半托减免',1000.00,N'2015/1/15 9:25:17',0)SET IDENTITY_INSERT [jianmian] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[jiaofeijine]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [jiaofeijine]--每学期每年级的学费金额
--年级金额-已交-减免=欠费金额
CREATE TABLE [jiaofeijine] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[nid] [int] NULL,--年级编号
[jine] [decimal] (18,2) NULL, --金额
[kemu] [int] NULL,
[pid] [int] NULL) --学期编号ALTER TABLE [jiaofeijine] WITH NOCHECK ADD CONSTRAINT [PK_jiaofeijine] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jiaofeijine] ONINSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 16,2,7000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 17,3,6000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 18,4,5000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 19,2,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 20,3,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 21,4,0.00,1,11)
--缴费记录
SET IDENTITY_INSERT [jiaofeijine] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[recordInfo]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [recordInfo]CREATE TABLE [recordInfo] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[uid] [int] NOT NULL, --用户编号
[pid] [int] NOT NULL, --学期编号
[Amount] [decimal] (18,2) NOT NULL, --金额
[gid] [int] NULL, --年级编号
[cid] [int] NULL --班级编号
)ALTER TABLE [recordInfo] WITH NOCHECK ADD CONSTRAINT [PK_recordInfo] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [recordInfo] ONINSERT [recordInfo] ([id],[uid],[pid],[Amount],[gid],[cid]) VALUES ( 149,3448,10,1000,2,46)SET IDENTITY_INSERT [recordInfo] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[SchoolUser]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [SchoolUser]--学生记录表
CREATE TABLE [SchoolUser] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[username] [varchar] (50) NOT NULL,
[cid] [int] NOT NULL, --班级编号
ALTER TABLE [SchoolUser] WITH NOCHECK ADD CONSTRAINT [PK_SchoolUser] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [SchoolUser] ONINSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3448,N'王玲',41)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3447,N'王玲',42)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3446,N'王玲',43)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3445,N'王玲',44)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3444,N'王玲',45)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3443,N'王玲',46)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3442,N'王玲',47)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3441,N'王玲',48)
SET IDENTITY_INSERT [SchoolUser] OFF
CREATE TABLE [jianmian] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[pid] [int] NOT NULL,--学期编号
[nid] [int] NOT NULL,--年级编号
[cid] [int] NOT NULL,--班级编号
[uid] [int] NOT NULL, --用户编号
[username] [varchar] (50) NULL,
[kemuid] [int] NULL,
[kemu] [varchar] (50) NULL,
[jine] [decimal] (18,2) NULL, --金额
[addtime] [datetime] NULL DEFAULT (getdate()),
[Del] [int] NULL,
[beizhu] [varchar] (580) NULL)ALTER TABLE [jianmian] WITH NOCHECK ADD CONSTRAINT [PK_jianmian] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jianmian] ONINSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 1,10,4,48,3448,N'王玲',4,N'工资扣除',1000.00,N'2015/1/15 9:01:23',0)
INSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 2,10,4,43,3448,N'王玲',5,N'半托减免',1000.00,N'2015/1/15 9:25:17',0)SET IDENTITY_INSERT [jianmian] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[jiaofeijine]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [jiaofeijine]--每学期每年级的学费金额
--年级金额-已交-减免=欠费金额
CREATE TABLE [jiaofeijine] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[nid] [int] NULL,--年级编号
[jine] [decimal] (18,2) NULL, --金额
[kemu] [int] NULL,
[pid] [int] NULL) --学期编号ALTER TABLE [jiaofeijine] WITH NOCHECK ADD CONSTRAINT [PK_jiaofeijine] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jiaofeijine] ONINSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 16,2,7000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 17,3,6000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 18,4,5000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 19,2,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 20,3,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 21,4,0.00,1,11)
--缴费记录
SET IDENTITY_INSERT [jiaofeijine] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[recordInfo]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [recordInfo]CREATE TABLE [recordInfo] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[uid] [int] NOT NULL, --用户编号
[pid] [int] NOT NULL, --学期编号
[Amount] [decimal] (18,2) NOT NULL, --金额
[gid] [int] NULL, --年级编号
[cid] [int] NULL --班级编号
)ALTER TABLE [recordInfo] WITH NOCHECK ADD CONSTRAINT [PK_recordInfo] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [recordInfo] ONINSERT [recordInfo] ([id],[uid],[pid],[Amount],[gid],[cid]) VALUES ( 149,3448,10,1000,2,46)SET IDENTITY_INSERT [recordInfo] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[SchoolUser]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [SchoolUser]--学生记录表
CREATE TABLE [SchoolUser] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[username] [varchar] (50) NOT NULL,
[cid] [int] NOT NULL, --班级编号
ALTER TABLE [SchoolUser] WITH NOCHECK ADD CONSTRAINT [PK_SchoolUser] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [SchoolUser] ONINSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3448,N'王玲',41)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3447,N'王玲',42)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3446,N'王玲',43)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3445,N'王玲',44)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3444,N'王玲',45)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3443,N'王玲',46)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3442,N'王玲',47)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3441,N'王玲',48)
SET IDENTITY_INSERT [SchoolUser] OFF
CREATE TABLE [jianmian] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[pid] [int] NOT NULL,--学期编号
[nid] [int] NOT NULL,--年级编号
[cid] [int] NOT NULL,--班级编号
[uid] [int] NOT NULL, --用户编号
[username] [varchar] (50) NULL,
[kemuid] [int] NULL,
[kemu] [varchar] (50) NULL,
[jine] [decimal] (18,2) NULL, --金额
[addtime] [datetime] NULL DEFAULT (getdate()),
[Del] [int] NULL,
[beizhu] [varchar] (580) NULL)ALTER TABLE [jianmian] WITH NOCHECK ADD CONSTRAINT [PK_jianmian] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jianmian] ONINSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 1,10,4,48,3448,N'王玲',4,N'工资扣除',1000.00,N'2015/1/15 9:01:23',0)
INSERT [jianmian] ([id],[pid],[nid],[cid],[uid],[username],[kemuid],[kemu],[jine],[addtime],[Del]) VALUES ( 2,10,4,43,3448,N'王玲',5,N'半托减免',1000.00,N'2015/1/15 9:25:17',0)SET IDENTITY_INSERT [jianmian] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[jiaofeijine]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [jiaofeijine]--每学期每年级的学费金额
--年级金额-已交-减免=欠费金额
CREATE TABLE [jiaofeijine] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[nid] [int] NULL,--年级编号
[jine] [decimal] (18,2) NULL, --金额
[kemu] [int] NULL,
[pid] [int] NULL) --学期编号ALTER TABLE [jiaofeijine] WITH NOCHECK ADD CONSTRAINT [PK_jiaofeijine] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [jiaofeijine] ONINSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 16,2,7000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 17,3,6000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 18,4,5000.00,1,10)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 19,2,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 20,3,0.00,1,11)
INSERT [jiaofeijine] ([id],[nid],[jine],[kemu],[pid]) VALUES ( 21,4,0.00,1,11)
--缴费记录
SET IDENTITY_INSERT [jiaofeijine] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[recordInfo]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [recordInfo]CREATE TABLE [recordInfo] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[uid] [int] NOT NULL, --用户编号
[pid] [int] NOT NULL, --学期编号
[Amount] [decimal] (18,2) NOT NULL, --金额
[gid] [int] NULL, --年级编号
[cid] [int] NULL --班级编号
)ALTER TABLE [recordInfo] WITH NOCHECK ADD CONSTRAINT [PK_recordInfo] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [recordInfo] ONINSERT [recordInfo] ([id],[uid],[pid],[Amount],[gid],[cid]) VALUES ( 149,3448,10,1000,2,46)SET IDENTITY_INSERT [recordInfo] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[SchoolUser]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [SchoolUser]--学生记录表
CREATE TABLE [SchoolUser] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[username] [varchar] (50) NOT NULL,
[cid] [int] NOT NULL, --班级编号
ALTER TABLE [SchoolUser] WITH NOCHECK ADD CONSTRAINT [PK_SchoolUser] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [SchoolUser] ONINSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3448,N'王玲',41)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3447,N'王玲',42)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3446,N'王玲',43)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3445,N'王玲',44)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3444,N'王玲',45)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3443,N'王玲',46)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3442,N'王玲',47)
INSERT [SchoolUser] ([id],[username],[cid]) VALUES ( 3441,N'王玲',48)
SET IDENTITY_INSERT [SchoolUser] OFFCREATE TABLE [SchoolClass] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[nid] [int] NOT NULL,
[cName] [varchar] (20) NOT NULL,
[addtime] [datetime] NULL DEFAULT (getdate()))ALTER TABLE [SchoolClass] WITH NOCHECK ADD CONSTRAINT [PK_SchoolClass] PRIMARY KEY NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [SchoolClass] ONINSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 1,2,N'2012级1班',N'2014/10/7 15:40:57')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 2,2,N'2012级2班',N'2014/10/7 15:41:04')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 3,2,N'2013级1班',N'2014/10/7 15:41:11')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 4,2,N'2014级1班',N'2014/10/7 15:41:17')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 5,2,N'98',N'2014/10/20 10:41:35')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 6,2,N'104',N'2014/10/20 10:41:42')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 7,2,N'107',N'2014/10/20 10:41:50')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 8,2,N'108',N'2014/10/20 10:42:00')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 9,2,N'109',N'2014/10/20 10:42:18')
INSERT [SchoolClass] ([id],[nid],[cName],[addtime]) VALUES ( 10,2,N'111',N'2014/10/20 10:42:21')
SET IDENTITY_INSERT [SchoolClass] OFF
这是班级表。是和年级挂钩的
测试数据看不出关联。
c.cName,
f.pid,
f.jine - ISNULL(r.Amount,0) - ISNULL(d.jine,0) --年级金额-已交-减免=欠费金额
FROM SchoolUser u
JOIN SchoolClass c
ON c.id = u.cid
JOIN jiaofeijine f
ON f.nid = c.nid
LEFT JOIN recordInfo r
ON r.uid = u.id
AND r.pid = f.pid
AND r.gid = c.nid
AND r.cid = c.id
LEFT JOIN (
SELECT pid,nid,cid,uid,SUM(jine) jine
FROM jianmian
GROUP BY pid,nid,cid,uid
) d
ON d.uid = u.id
AND d.pid = f.pid
AND d.nid = c.nid
AND d.cid = c.id
应该就是这样了。你的测试数据连接后为空,不能贴结果了。