请教一条SQL语句如何写?高分求救,挺急的

时光瞄 2018-11-07 03:34:35
如下图所示:
q1、q2、q3和q4是用户账号,m1、m2、m3和m4是四个金额字段
q1和m1是肯定有值的,后面的三组字段不一定有值
如何按照用户的账号来求m1、m2、m3、m4的合计值并按金额倒序排序呢?
困扰我几天了,实在是想不出来怎么写

...全文
54 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
时光瞄 2018-11-07
  • 打赏
  • 举报
回复
感谢版主的热心回答,测试已通过。
吉普赛的歌 2018-11-07
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	id INT PRIMARY KEY,
	q1 INT NOT NULL,
	m1 DECIMAL(10,2) NOT NULL,
	q2 INT,
	m2 DECIMAL(10,2),
	q3 INT,
	m3 DECIMAL(10,2),
	q4 INT,
	m4 DECIMAL(10,2)
) 
GO
SET NOCOUNT ON
INSERT INTO t
          SELECT 1	,10001,8.8,10002,3.8,10007,1.8,10003,1.3
UNION ALL SELECT 2	,10005,1.3,10002,6.6,NULL,NULL,NULL,null
UNION ALL SELECT 3	,10002,6.5,10004,3.2,10003,7.2,NULL,null
UNION ALL SELECT 4	,10004,3.9,10005,5.4,NULL,NULL,NULL,null		
UNION ALL SELECT 5	,10007,2.9,NULL,NULL,10004,2.3,NULL,null
UNION ALL SELECT 6	,10009,4.2,10001,3.7,NULL,NULL,NULL,NULL
UNION ALL SELECT 7	,10004,6.7,NULL,NULL,NULL,NULL,NULL,NULL
UNION ALL SELECT 8	,10002,3.8,NULL,NULL,NULL,NULL,NULL,NULL
---- 以上为测试数据 ------

SELECT 
q
,SUM(m) AS m 
FROM (
	SELECT q1 AS q,m1 AS m FROM t
	UNION ALL
	SELECT q2,m2 FROM t
	UNION ALL
	SELECT q3,m3 FROM t
	UNION ALL
	SELECT q4,m4 FROM t
) AS tt 
WHERE q IS NOT NULL AND m IS NOT NULL
GROUP BY q
ORDER BY m DESC

/*
q           m
----------- -------
10002       20.70
10004       16.10
10001       12.50
10003       8.50
10005       6.70
10007       4.70
10009       4.20
 */
二月十六 2018-11-07
  • 打赏
  • 举报
回复
建议楼主列出表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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