请教一条SQL语句! (至今没人写出满意答案)

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:00:22
例如:表中有3个字段,4条记录,要求前两个字段一样的话,就要合并为一条记录,不考虑第三项是否一样,结果要把所有字段显示出来,第三项字段的取值,随便前两字段相同记录的任意之一。
表里的数据不能改变,只是作检索,表中字段均非主键
a 表 name ymd data
123 2007 100
122 2007 100
123 2007 200
124 2008 100
检索后 name ymd data
123 2007 100
122 2007 100
124 2008 100
抽出前两项一样的数据的第一条就好,如果后边有的字段不是数字型的,用函数是不行的?我记得要用到fetch,但具体怎么写我给忘了
请各位大侠看清问题,不要一次次让我失望啊,要检索出的字段不能变,原表几个字段,检索后还要有几个字段,其实就是按部分字段分组,看有多少条数据。

您这人真是叫劲,都说了,除了text、ntext 和 image三种类型以外,MAX函数适合任意类型的数据。非要费更多的资源去查询这么个简单的问题。
下面的查询,胜任任何字段类型,我们费半天劲,你可要试要,别太赖了噢。复制了执行就行了,不要改动。

select distinct name,ymd,data=

--这个不给你用了,您总烦他。max(data)
--改用下面的子查询
(select top 1 data from a表 b where b.name=a.name and b.ymd=a.ymd )

from a表 a
======
你太小气了,回答了你的问题,怎么也花了不少时间,也没说什么错误,还给关闭了,这样多不好啊。
以上的答案,只能用于只有一个其它字段的情况。
要想要多字段输出的,答案已经有了(在俺脑子里),请再另外提问题再回答你吧。
=====
另外,别一再的提什么FETCH了,那是游标里用的,别的地方没用。
=====

select distinct name,ymd ||' '||data
from a;

select distinct name
from a
where data=‘100’

SELECT MAX(name) AS name, ymd, data FROM a GROUP BY ymd, data