咨询一个关于TSQL里面DISTINCT的问题
小弟我最近碰到一个问题 在SQLSERVER2005里面使用DISTINCT 时 发现只能去掉某一列的重复 我想提取去掉重复的那一列后的其他列的相关信息怎么办啊?如下表:
姓名 账号 金额
张三 60535000 50
王五 60535001 50
李四 60535000 100.00
用select distinct 账号 FROM table
只能有
账号、
60535000
60535001
如果我现在想在这个基础上得到
姓名 账号 金额
张三 60535000 50.00
王五 60535001 50.00
或者
姓名 账号 金额
王五 60535001 50.00
李四 60535000 100.00
也行。
用什么T --SQL 很急 等待 因为我有10万行记录要处理。。。。
谢谢了!
--------------------编程问答-------------------- select * from table where 账号 in (select distinct 账号 FROM table) --------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/library/ms146033.aspx --------------------编程问答-------------------- select Min(姓名), 账号, min(金额) from table group by 账号;
select Max(姓名), 账号, max(金额) from table group by 账号;
当账号重复,其它项不重复的时候,你要决定其它项怎么选择 --------------------编程问答-------------------- 比较简单的写法是
SELECT MAX(姓名),帐号,MAX(金额) FROM Table GROUP BY 帐号
但结果里面的张三对应金额是100.00,
如果这不接受的话就复杂些了
这里还分两种情况:
1.table里面的姓名如果不会重复
select A.姓名,A.帐号,A.金额 from table A.INNER JOIN
(SELECT MAX(姓名) AS Name,帐号 FROM Table GROUP BY 帐号) B
ON A.姓名=B.Name AND A.帐号=B.帐号
2.连姓名都会重复
select A.姓名,A.帐号,MAX(A.金额) from table A.INNER JOIN
(SELECT MAX(姓名) AS Name,帐号 FROM Table GROUP BY 帐号) B
ON A.姓名=B.Name AND A.帐号=B.帐号
GROUP BY A.姓名,A.帐号
--------------------编程问答-------------------- SQL 问题 有SQL专区. --------------------编程问答-------------------- 4楼 正解 --------------------编程问答--------------------
mark
补充:.NET技术 , C#