弄一条sql语句,把重复的记录的某些字段值相加

NewCSDN2005 2017-10-29 03:57:34
如下表:
姓名 学校 年级 缴费记录 欠费金额 地址
小明 一小 一 10 1 广东
小明 一小 一 10 1 广州
小红 二小 二 20 2 上海
小华 一小 一 30 3 重庆

姓名、学校、年级 相同的记录就把 “缴费记录”、“欠费金额”相加,地址 保留其中一个就行,结果如下图:

姓名 学校 年级 缴费记录 欠费金额 地址
小明 一小 一 20 2 广东
小红 二小 二 20 2 上海
小华 一小 一 30 3 重庆
...全文
2662 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2017-10-29
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	[姓名] nvarchar(10)
	,[学校]  NVARCHAR(10)
	,[年级]  NVARCHAR(10)
	,[缴费记录]  int
	,[欠费金额] int
	,[地址]  NVARCHAR(10)
)
GO
INSERT INTO t
 SELECT '小明','一小','一','10','1','广东' 
 UNION SELECT '小明','一小','一','10','1','广州' 
 UNION SELECT '小红','二小','二','20','2','上海' 
 UNION SELECT '小华','一小','一','30','3','重庆' 

SELECT [姓名],[学校],[年级] 
,SUM([缴费记录]) [缴费记录]
,SUM([欠费金额]) [欠费金额]
,MAX([地址]) [地址]
FROM t GROUP BY [姓名],[学校],[年级]
/*
姓名         学校      年级       缴费记录    欠费金额        地址
---------- ---------- ---------- ----------- ----------- ----------
小红         二小         二          20          2           上海
小华         一小         一          30          3           重庆
小明         一小         一          20          2           广州
*/
二月十六 版主 2017-10-29
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([姓名] nvarchar(22),[学校] nvarchar(22),[年级] nvarchar(21),[缴费记录] int,[欠费金额] int,[地址] nvarchar(22))
Insert #T
select N'小明',N'一小',N'一',10,1,N'广东' union all
select N'小明',N'一小',N'一',10,1,N'广州' union all
select N'小红',N'二小',N'二',20,2,N'上海' union all
select N'小华',N'一小',N'一',30,3,N'重庆'
Go
--测试数据结束
;WITH cte AS (
SELECT 姓名, 学校, 年级 ,
SUM(缴费记录) OVER ( PARTITION BY 姓名, 学校, 年级 ) AS 缴费记录 ,
SUM(欠费金额) OVER ( PARTITION BY 姓名, 学校, 年级 ) AS 欠费金额 ,
ROW_NUMBER() OVER ( PARTITION BY 姓名, 学校, 年级 ORDER BY 地址 ) AS rn,
地址
FROM #T
)
SELECT 姓名 ,
学校 ,
年级 ,
缴费记录 ,
欠费金额 ,
地址
FROM cte
WHERE cte.rn = 1;



lpd743663 2017-10-29
  • 打赏
  • 举报
回复
小明的 2个地址不一样
NewCSDN2005 2017-10-29
  • 打赏
  • 举报
回复
等着大家来帮忙

34,835

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧