但是,我要求显示在不同的列中的,有办法吗?
追答办法当然有,如果仅用SQL,列数可能只能固定了,例如
CREATE FUNCTION GetYQFromIndex(@AID nvarchar(100),@index int)
RETURNS nvarchar(1024)
AS
BEGIN
declare @Str varchar(1024)
select *,IDENTITY(int,1,1) as indexid into #t
from (select * from a表 where ID=@AID)a
select @Str=仪器 from #t where indexid=@index
drop table #t
return @Str
END
然后查询
select ID,GetYQFromIndex(ID,1)as 仪器1
,GetYQFromIndex(ID,2)as 仪器2
,GetYQFromIndex(ID,3)as 仪器3
...
from (select distinct ID from a表)a
写得好累,要给分哦^_^
不能用哦,提示“无法从函数内访问临时表”
以下是错误提示;
消息 2772,级别 16,状态 1,过程 GetYQFromIndex,第 10 行
无法从函数内访问临时表。
消息 156,级别 15,状态 1,过程 GetYQFromIndex,第 13 行
关键字 'select' 附近有语法错误。
消息 195,级别 15,状态 10,过程 GetYQFromIndex,第 13 行
'GetYQFromIndex' 不是可以识别的 内置函数名称。
改写
CREATE FUNCTION GetYQFromIndex(@AID nvarchar(100),@index int)
RETURNS nvarchar(1024)
AS
BEGIN
declare @Str varchar(1024)
select @Str=仪器
from (select *,IDENTITY(int,1,1) as indexid
from (select * from a表 where ID=@AID)a) b
where indexid=@index
return @Str
END
然后查询
select ID,dbo.GetYQFromIndex(ID,1)as 仪器1
,dbo.GetYQFromIndex(ID,2)as 仪器2
,dbo.GetYQFromIndex(ID,3)as 仪器3
...
from (select distinct ID from a表)a
///////////////////////
既然提示“无法从函数内访问临时表”也可以不用函数
select ID
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=1)as 仪器1
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=2)as 仪器2
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=3)as 仪器3
...
from (select distinct ID from a表)a
///////////////////////
自己应该学会调试和改写,方法一看就能会,要问调试细节,我这里没有SQL服务器啊^_^
提示“关键字 'IDENTITY' 附近有语法错误。”
还有请问大神,from (select distinct ID from a表)这句中为什么是“a表”而不是“a"
辛苦大神了,无论结果怎样我都会给你加分,如果方便请留个QQ,继续帮帮我,谢谢
你开始写的“a表中三列:ID 数量 仪器”所以我就把“a表”当表名
有个问题我搞错了,IDENTITY(int,1,1)只支持 INTO,那么继续改写,晕了
改写
CREATE FUNCTION GetYQFromIndex(@AID nvarchar(100),@index int)
RETURNS nvarchar(1024)
AS
BEGIN
declare @Str varchar(1024)
select top 1 @Str=仪器
from(select top @index *
from (select * from a表 where ID=@AID)
order by ID,数量,仪器 ASC)a
order by ID,数量,仪器 DESC
return @Str
END
然后查询
select ID,dbo.GetYQFromIndex(ID,1)as 仪器1
,dbo.GetYQFromIndex(ID,2)as 仪器2
,dbo.GetYQFromIndex(ID,3)as 仪器3
...
from (select distinct ID from a表)a