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

SQL语句比较郁闷解决思路

2012-05-11 
SQL语句比较郁闷表AIDCODENAME1001土豆丝2002炒黄瓜表BIDCODETypeStartDateEndData100102012-5-112012-5-3

SQL语句比较郁闷
表A
ID CODE NAME  
1 001 土豆丝  
2 002 炒黄瓜  


表B 
ID CODE Type StartDate EndData  
1 001 0 2012-5-11 2012-5-30
2 002 1 2012-5-10 2012-5-20

显示
表C
ID CODE NAME 推荐菜 开始时间 结束时间 特价菜 开始时间 结束时间 
1 001 土豆丝 TRUE 2012-5-10 2012-5-20 NULL NULL NULL
2 002 炒黄瓜 NULL NULL NULL TRUE 2012-5-10 2012-5-30


PS: 表B 0 表示推荐菜 1 表示 特价菜

[解决办法]

SQL code
if object_id('[TB1]') is not null drop table [TB1]gocreate table [TB1] (ID int,CODE nvarchar(6),NAME nvarchar(6))insert into [TB1]select 1,'001','土豆丝' union allselect 2,'002','炒黄瓜'if object_id('[TB2]') is not null drop table [TB2]gocreate table [TB2] (ID int,CODE nvarchar(6),Type int,StartDate datetime,EndDate datetime)insert into [TB2]select 1,'001',0,'2012-5-11','2012-5-30' union allselect 2,'002',1,'2012-5-10','2012-5-20'select * from [TB1]select * from [TB2]SELECT  A.id ,        A.code ,        A.NAME ,        CASE WHEN B.TYPE = 0 THEN 'True'             ELSE ''        END '推荐菜' ,        CASE WHEN B.TYPE = 0 THEN B.startdate             ELSE NULL        END  AS '开始时间0',        CASE WHEN B.TYPE = 0 THEN B.enddate             ELSE NULL        END AS '结束时间0',        CASE WHEN B.TYPE = 1 THEN 'True'             ELSE ''        END '特价菜' ,        CASE WHEN B.TYPE = 1 THEN B.startdate             ELSE NULL        END  AS '开始时间1',        CASE WHEN B.TYPE = 1 THEN B.enddate             ELSE NULL        END AS '结束时间1'FROM    TB1 A        INNER JOIN TB2 B ON A.code = b.code        /*      id          code   NAME   推荐菜  开始时间0                   结束时间0                   特价菜  开始时间1                   结束时间1----------- ------ ------ ---- ----------------------- ----------------------- ---- ----------------------- -----------------------1           001    土豆丝    True 2012-05-11 00:00:00.000 2012-05-30 00:00:00.000      NULL                    NULL2           002    炒黄瓜         NULL                    NULL                    True 2012-05-10 00:00:00.000 2012-05-20 00:00:00.000(2 row(s) affected)*/ 

热点排行