sql两张表的匹配

partyboss 2009-05-30 11:56:55
我有两张表,一张表存储得考试题目,一张表存储得所有的考题的所有待选答案.表结构如下:
题目表:Backup_Themes
ID int 编号,主键
Theme varchar 题目
Solution varchar 正确答案
Type int 题目的类型,1为单选题,2为多选题,3为判断题

答案表:Backup_Solution
ID int 编号
Options varchar 答案的选项,如A,B,C,D
Solution varchar 答案内容
Theme int 所属题目



一条sql语句:select a.ID,a.Theme,b.Solution,a.Type from Backup_Themes a left join Backup_Solution b on b.Theme=a.ID where a.Type=1

我用上面的sql语句读取出来的记录是:
1 受益人变更的申请资格人是 投保人 1
1 受益人变更的申请资格人是 被保险人 1
1 受益人变更的申请资格人是 生存受益人 1
1 受益人变更的申请资格人是 身故受益人 1
2 公司服务人员代办现金退费类保全业务的限额是 50000元 1
2 公司服务人员代办现金退费类保全业务的限额是 500元 1
2 公司服务人员代办现金退费类保全业务的限额是 0元 1
2 公司服务人员代办现金退费类保全业务的限额是 1000元 1
3 累积红利领取的申请资格人是 投保人 1
3 累积红利领取的申请资格人是 被保险人 1
3 累积红利领取的申请资格人是 生存受益人 1
3 累积红利领取的申请资格人是 身故受益人 1


我想要请教的问题是:
怎么才能让记录集的第一条记录是第一题的题目、所有的答案选项、题目类型,而不是第一行是题目、第一个答案选项、题目类型?

请哪位大侠指导一下,谢谢了。
...全文
282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
partyboss 2009-05-31
  • 打赏
  • 举报
回复
谢谢不逆兄.
jiangshun 2009-05-31
  • 打赏
  • 举报
回复
不知道这是不是你想要的结果

if object_id('tab')is not null
drop table tab
create table tab(编号 int,题目 varchar(80), 答案选项 varchar(20), 题目的类型 int)
insert into tab select
1,'受益人变更的申请资格人是 ','投保人 ',1 union all select
1,'受益人变更的申请资格人是 ','被保险人 ',1 union all select
1,'受益人变更的申请资格人是 ','生存受益人',1 union all select
1,'受益人变更的申请资格人是 ','身故受益人',1 union all select
2,'公司服务人员代办现金退费类保全业务的限额是','50000元 ',1 union all select
2,'公司服务人员代办现金退费类保全业务的限额是','500元 ',1 union all select
2,'公司服务人员代办现金退费类保全业务的限额是','0元 ',1 union all select
2,'公司服务人员代办现金退费类保全业务的限额是','1000元 ',1 union all select
3,'累积红利领取的申请资格人是 ','投保人 ',1 union all select
3,'累积红利领取的申请资格人是 ','被保险人 ',1 union all select
3,'累积红利领取的申请资格人是 ','生存受益人',1 union all select
3,'累积红利领取的申请资格人是 ','身故受益人',1


if object_id('f_str')is not null
drop function f_str

create function dbo.f_str(@编号 int) returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + cast(答案选项 as varchar) from tab where 编号 = @编号
set @str = right(@str , len(@str) - 1)
return @str
end
go

select 编号,题目,答案选项=dbo.f_str(编号), 题目的类型 from tab group by 编号,题目,题目的类型

/*
编号 题目 答案选项 题目的类型
----------- -------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -----------
1 受益人变更的申请资格人是 投保人 ,被保险人 ,生存受益人,身故受益人 1
2 公司服务人员代办现金退费类保全业务的限额是 0元 ,500元 ,0元 ,1000元 1
3 累积红利领取的申请资格人是 投保人 ,被保险人 ,生存受益人,身故受益人 1

(所影响的行数为 3 行)


*/

drop table tab
drop function f_str
partyboss 2009-05-31
  • 打赏
  • 举报
回复
这些就是数据:

题目的编号 题目 答案选项 题目的类型

1 受益人变更的申请资格人是 投保人 1
1 受益人变更的申请资格人是 被保险人 1
1 受益人变更的申请资格人是 生存受益人 1
1 受益人变更的申请资格人是 身故受益人 1
2 公司服务人员代办现金退费类保全业务的限额是 50000元 1
2 公司服务人员代办现金退费类保全业务的限额是 500元 1
2 公司服务人员代办现金退费类保全业务的限额是 0元 1
2 公司服务人员代办现金退费类保全业务的限额是 1000元 1
3 累积红利领取的申请资格人是 投保人 1
3 累积红利领取的申请资格人是 被保险人 1
3 累积红利领取的申请资格人是 生存受益人 1
3 累积红利领取的申请资格人是 身故受益人 1
jiangshun 2009-05-31
  • 打赏
  • 举报
回复
给些数据比较好,看不懂你的意思
partyboss 2009-05-31
  • 打赏
  • 举报
回复
不逆兄,有没有sql语句可以实现?
jiangshun 2009-05-31
  • 打赏
  • 举报
回复
行列装换

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧