首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于sql列显示有关问题

2012-08-10 
关于sql列显示问题有两张表问题表:atb_question-----------------------dmmc0001问题一0002问题二0003问题

关于sql列显示问题
有两张表
问题表:a 
tb_question
-----------------------
dm mc
0001 问题一
0002 问题二
0003 问题三
0004 问题四
0005 问题五
------------------------
然后 
有个调查表 tb_poce
billcode quest_dm quest_value
1 0001 你
1 0002 好
2 0001 吗
2 0004 很好
----------------
现在要求显示。意思就是每张订单都有固定的五个问题,没有回答的就用空显示。。
---------------------------
单据号 问题一 问题二 问题三 问题四 问题五
 1 你 好 null null null
 2 吗 null null 很好 null
---------
上面这种格式如何用sql 来解决


 

[解决办法]
http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
[解决办法]

SQL code
--> 测试数据:[tb_question]if object_id('[tb_question]') is not null drop table [tb_question]gocreate table [tb_question]([dm] varchar(4),[mc] varchar(6))insert [tb_question]select '0001','问题一' union allselect '0002','问题二' union allselect '0003','问题三' union allselect '0004','问题四' union allselect '0005','问题五'go--> 测试数据:[tb_poce]if object_id('[tb_poce]') is not null drop table [tb_poce]gocreate table [tb_poce]([billcode] int,[quest_dm] varchar(4),[quest_value] varchar(4))insert [tb_poce]select 1,'0001','你' union allselect 1,'0002','好' union allselect 2,'0001','吗' union allselect 2,'0004','很好'go;with tas(select     * from     [tb_question]cross join    (        select             distinct [billcode]         from             [tb_poce]    ) b)select     a.mc,    a.billcode,    b.quest_value into    #tbfrom     t aleft join     [tb_poce] bon     a.billcode=b.billcode     and a.dm=b.quest_dm        godeclare @str varchar(2000)set @str=''select     @str=@str+','+mc+'=max(case when mc='+    QUOTENAME(mc,'''')+' then quest_value else null end)'from    #tbgroup by    mcexec('select billcode as 单据号'+@str+' from #tb group by billcode')go/*单据号    问题一    问题二    问题三    问题四    问题五----------------------------1    你    好    NULL    NULL    NULL2    吗    NULL    NULL    很好    NULL*/ 

热点排行