我有两个表,一个主表,一个从表,主表有1条数据,从表有两条数据,如:
tableM:姓名,性别
tableD:姓名,经历一
姓名,经历二
我想要通过查询实现这样的效果
姓名,经历一,经历二请问怎么样实现,SQL语句怎么写??如果从表的记录数不确定,又该怎么写呢?!!
怎样实现,动态的把从表的记录插到主表的列中呢?!!谢谢了。
tableM:姓名,性别
tableD:姓名,经历一
姓名,经历二
我想要通过查询实现这样的效果
姓名,经历一,经历二请问怎么样实现,SQL语句怎么写??如果从表的记录数不确定,又该怎么写呢?!!
怎样实现,动态的把从表的记录插到主表的列中呢?!!谢谢了。
create function dbo.fn_bb(@a varchar(10))
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s=''
select @s=@s+[经历]+',' from 表2 where 姓名=@a
return (left(@s,len(@s)-1))
end
select 姓名,经历=dbo.fn_bb(姓名) from 表1 group by 姓名 order by 2
姓名 经历
@cardname varchar(50)AS
/*声明一个查询表的游标*/
Declare @tempCursor Cursor
Set @tempCursor = Cursor For
SELECT title
FROM cardsms
WHERE cardname=@cardname
For Read Only
/*打开表游标*/
Open @tempCursor
Declare @sqltext varchar(1000)
SET @sqltext = "SELECT '" + @cardname + "'"
Declare @title varchar(50)
WHILE (0=0) BEGIN
/*取一条投注记录*/
Fetch Next
From @tempCursor
INTO @title
IF (@@Fetch_Status<>0) Break /*到达表尾*/
SET @sqltext = @sqltext + ",'" + @title + "'"
END
/*关闭并释放投注表游标*/
Close @tempCursor
Deallocate @tempCursor
exec(@sqltext)
GO
请注意,sql server一个表最多1024列,每行最多可以存储 8,060 字节。所以你的返回结果,不能超过这个限制。
select x.*,qd1.vcJYJLBH as sjbh1,qd2.vcJYJLBH as sjbh2,qd3.vcJYJLBH as sjbh3,
[fCYMJ1]='10000',[fCYMJ3]='10000',[fCYMJ2]='10000',z.vcGCBW,z.dtCXRQ
into #ss
from tbTQDPDBGXB X
left join tbTQDPDBGZB z on z.vcZBDJBH=x.vcZBDJBH
left join tbHNTCCJCJL qd1 on qd1.vczbdjbh=vcXNQDZBBH
left join tbHNTCCJCJL qd2 on qd2.vczbdjbh=vcXNQDZBBH1
left join tbHNTCCJCJL qd3 on qd3.vczbdjbh=vcXNQDZBBH2
where x.vczbdjbh=:vczbdjbh
select @i=count(*) from #ss
if @i>6 select @i=@i%6
while 6-@i>0
begin
insert into #ss(vcZBDJBH,vcXBDJBH,fCYMJ1,fCYMJ2,fCYMJ3) values('1','1',' ',' ',' ')
select @i=@i+1
end
select * from #ss order by vczbdjbh DESCdrop table #ss这是我的一个程序跟你的一样我的是多行多个字段的
给个例子
/**//*
代码 进货单位 药类 让利金额
01 广州 西药 10
01 广州 中成药 9
01 广州 医材 8
01 广州 中草药 7
02 西安 西药 2
02 西安 医材 6
03 深圳 西药 5
*/
select 代码,进货单位,
"西药"=(select 让利金额 from abc where 药类 ='西药' and 代码=t1.代码),
"中成药"=(select 让利金额 from abc where 药类 ='中成药' and 代码=t1.代码),
"医材 "=(select 让利金额 from abc where 药类 ='医材' and 代码=t1.代码),
"中草药"=(select 让利金额 from abc where 药类 ='中草药' and 代码=t1.代码),
"合计"=(select sum(药类) from abc where 代码=t1.代码 group by 代码)
from abc t1 group by 代码,进货单位
/**//*
代码 进货单位 西药 中成药 医材 中草药 合计
01 广州 10 9 8 7 34
02 西安 2 0 6 0 8
*/