日期:2014-05-18  浏览次数:20471 次

有条sql语句有点难,不知道如何简洁的写出来,所以发出来请教一下大家,大家感兴趣的进来看看,顺祝中秋节快乐!!
表A:
********************************************
******************************************
id         name             goods_type       area
1           A月饼           面食                 南京
2           B月饼             面食               南京
3           A月饼             面食               北京
4           A月饼             面食               北京
5           A月饼             面食               北京


现在已知参数id,area比如   id=1,area=北京现在要根据(name   和goods_type)相同的另一地区的id
现在要求得到结果如下:id=3,4,5
如何写sql语句呢


------解决方案--------------------
不知道这个是不是楼主想要的。。
try:

create table ta(id int ,name varchar(50),goods_type varchar(50), area varchar(50))
insert into ta select 1, 'A月饼 ', '面食 ', '南京 '
union all select 2, 'B月饼 ', '面食 ', '南京 '
union all select 3, 'A月饼 ', '面食 ', '北京 '
union all select 4, 'A月饼 ', '面食 ', '北京 '
union all select 5, 'A月饼 ', '面食 ', '北京 '

alter function ttt(@id int ,@area varchar(50))
returns varchar(50)
as
begin
declare @name varchar(50)
declare @goods_type varchar(50)
declare @sql varchar(50)
select @name=name,@goods_type=goods_type from ta where id=@id
select @sql=isnull(@sql+ ', ', ' ')+cast(id as varchar) from ta where name=@name and goods_type=@goods_type and area=@area
return @sql
end

调用函数:
select dbo.ttt(1, '北京 ')

执行结果:3,4,5