Sql Server 查询,一共三列,怎样查出第一个列值相同,第二列值最大的第三列的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql Server 查询,一共三列,怎样查出第一个列值相同,第二列值最大的第三列的值?相关的知识,希望对你有一定的参考价值。
a1 a2 taborder
1 a 1
2 a 2
3 b 5
4 b 6
5 b 8
6 c 9
想查出a2相同的情况下,taborder 值最大的a1值,谢谢啦
就是当a2 = a 时,查出a1 = 2; a2 = b 时,查出 a1 = 5.
把所有不同的a2列都显示出来,能不能用foreach?
《按某列分组,求另一列最大或最小值所在整行数据的方法》
利用子查询,试一下,很好用的(a1可根据需要去掉):
select a2,a1 from tablename where
taborder=(select max(taborder) from tablename a where a.a2=tablename.a2)
查出结果为
a,2
b,5
c,6 参考技术A
用个sql就可以了
from
(
select A.a2, max(A.a1) a1
from table A
group by A.a2
) A, table B
Where A.a2 = B.a2
and A.a1 = B.a1 参考技术B select a2,max(a1) a1 from 表 group by a2
sql建表问题
我想建立一个表,第一列是姓名,第二列是投票数,第三列是此人票数的百分比.例如,甲、乙、丙三人得票分别为2,3,5票,怎样在第三列显现他们得票的百分比???
--DROP Table Test--生成测试数据
CREATE TABLE TestPercent
(
姓名 varchar(20),
票数 int
)
INSERT INTO TestPercent
SELECT '甲',2
UNION ALL SELECT '乙',3
UNION ALL SELECT '丙',5
--查询数据
SELECT 姓名,票数,所占比列=LTRIM( CAST ((票数*1.0/总票数)*100 AS DECIMAL(12,2) ) ) + '%'
FROM TestPercent ,(SELECT SUM(票数)AS 总票数 FROM TestPercent )as t
--非要及时看到所占百分比
--创建个视图把
CREATE VIEW VTestPercent
AS
SELECT 姓名,票数,所占比列=LTRIM( CAST ((票数*1.0/总票数)*100 AS DECIMAL(12,2) ) ) + '%'
FROM TestPercent ,(SELECT SUM(票数)AS 总票数 FROM TestPercent )as t
--查询试图
SELECT * FROM VTestPercent
--删除测试数据
DROP VIEW VTestPercent
DROP TABLE TestPercent
--希望对你有帮助 我用的是SQLSERVER 参考技术A 这一列使计算的到来的 所以可以不用在表中创建该列 当需要获得这一数据时 使用select语句进行计算
比如 表结构 toupiao(姓名,票数)
当需要获得每人的票数百分比是可以用下面的语句获得
select 姓名,票数,票数/sum(票数) as 百分比 from 投票
这样就会得到每个人的姓名票数及其百分比 参考技术B 根据题意,当插入一条记录时,因为总票数增加,所以表中所有的记录“百分比”字段都需要更新。
给表加触发器:
比如表名是tab。执行以下语句创建触发器:
CREATE TRIGGER [inserted_tab] ON [dbo].[tab]
FOR INSERT
AS
update tab
set 百分比=cast(投票数 as float)*100/(select sum(投票数) from tab)
from tab
这样当插入记录时,百分比字段将自动更新。
希望对你有帮助! 参考技术C 一楼集函数没你那种用法
二楼的每次查看结果都要运行一遍存储过程
正确的方法要用触发器,这样牵涉到变异表的操作,标准的模式为3个触发器和一个临时表
一个语句级before触发器,清空临时表的数据
一个行级before触发器,向临时表写入需要更新的id
一个语句级after触发器,读取临时表中的id,计算统计信息更新你的表 参考技术D 可以写一个存储过程呀
用它来计算结果加入到表中
create proc jisuan @name char(8)
as
update table_1
set 百分比=convert(float,票数)/(select sum(票数) from table_1)
where 姓名=@name
以上是关于Sql Server 查询,一共三列,怎样查出第一个列值相同,第二列值最大的第三列的值?的主要内容,如果未能解决你的问题,请参考以下文章
怎样在一条sql语句中将第一列和第二列加和的值作为第三列的值