相同名称的值只显示一个 ASP

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:07:56
有这样一个表
id fpno fno
1 1 a
2 1 b
3 1 c
4 2 a
5 2 b
6 3 a

我要实现的是在显示的时候
fpno fno
1 a b c
2 a b
3 a
我用这句语句
select * from product where id in(select max(id) from product group by fpno)
能得到这个结果,
但是select * from product where id in(select max(id) from product group by fpno) and fno='a'的时候只显示fpno 为1,3的结果,2的结果不包含了,这个该怎么解决
可能我意思讲错了,真是不好意思!其实我是要实现的是

fpno fno ……
1 a
b
c

2 a
b
3 a

set rs_buy =server.createobject("ADODB.RecordSet")
sql="select * from product where id in(select max(id) from product group by fpno)"
if nowstartdate<>"" then
sql=sql&" and cctime-#"&nowstartdate&"#>=0"
end if
if nowenddate<>"" then
sql=sql

请访照我给出例子自己写一函数就行了

--建表
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
--建函数
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')

END

GO
-- 调用函数
SELECt id, value = dbo.f_str(id) FROM tb GROUP BY id

drop table tb
drop function dbo.f_str

and fno='a'
放到里面的子查询里去。

SELECT *
FROM [product]
WHERE [id] IN(
SELECT MAX([id])
FROM [product]
AND ([fno] = 'a')
GROUP BY [fpno]
)

你的结果应该用这条语句来实现吧

TRANSFORM First(