求sql语句一条(先答对者得分) ( 积分: 80 )

  • 主题发起人 主题发起人 小红河
  • 开始时间 开始时间

小红河

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构:<br>A表:&nbsp;<br>姓名&nbsp;&nbsp;代码<br>张三&nbsp;&nbsp;001<br>李四&nbsp;&nbsp;002<br>王麻子&nbsp;003<br><br>B表:&nbsp;<br>代码&nbsp;工作名称&nbsp;最后工作时间(datetime类型)&nbsp;<br>001&nbsp;&nbsp;&nbsp;种类1&nbsp;&nbsp;&nbsp;&nbsp;10月29日<br>002&nbsp;&nbsp;&nbsp;种类2&nbsp;&nbsp;&nbsp;&nbsp;10月30日<br>001&nbsp;&nbsp;&nbsp;种类1&nbsp;&nbsp;&nbsp;&nbsp;10月30日<br>002&nbsp;&nbsp;&nbsp;种类3&nbsp;&nbsp;&nbsp;&nbsp;10月31日<br>003&nbsp;&nbsp;&nbsp;种类1&nbsp;&nbsp;&nbsp;&nbsp;10月20日<br><br>想得到:每个人做每项工作的最后时间&nbsp;<br>C表:&nbsp;<br>姓名&nbsp;&nbsp;种类1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;种类2&nbsp;&nbsp;种类3<br>张三&nbsp;&nbsp;10月31日&nbsp;&nbsp;&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无<br>李四&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10月30日&nbsp;&nbsp;&nbsp;10月31日<br>王麻子&nbsp;10月20日&nbsp;&nbsp;&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无
 
SELECT&nbsp;b1.姓名,&nbsp;b2.工作名称,&nbsp;max(b2.时间)<br>FROM&nbsp;b1,&nbsp;b2<br>where&nbsp;b1.代码=b2.代码<br>group&nbsp;by&nbsp;b1.姓名,b2.工作名称;
 
Tomyid0602:<br>我要得到的是以&quot;种类1&quot;,“种类2”和“种类3”为字段名的数据,数据的内容是时间&nbsp;<br>当然,如果B表里面如果有“种类4”,我的C表里面的字段也不会自动赠加,还是&quot;种类1&quot;,“种类2”和“种类3”
 
我記得你&nbsp;的這個問題以前有人提過。你找找,和你的一樣的問題。也是把豎著的數據橫著排列的,
 
是交叉表。<br>select&nbsp;姓名,&nbsp;<br>Max(case&nbsp;工作名称&nbsp;when&nbsp;'种类1'&nbsp;then&nbsp;最后工作时间&nbsp;else&nbsp;null&nbsp;end)&nbsp;种类1,<br>Max(case&nbsp;工作名称&nbsp;when&nbsp;'种类2'&nbsp;then&nbsp;最后工作时间&nbsp;else&nbsp;null&nbsp;end)&nbsp;种类2,<br>Max(case&nbsp;工作名称&nbsp;when&nbsp;'种类3'&nbsp;then&nbsp;最后工作时间&nbsp;else&nbsp;null&nbsp;end)&nbsp;种类3<br>from&nbsp;a,b<br>where&nbsp;a.代码=b.代码<br>and&nbsp;工作名称&nbsp;in&nbsp;('种类1','种类2','种类3')<br>group&nbsp;by&nbsp;姓名
 
declare&nbsp;&nbsp;@a&nbsp;table(a_name&nbsp;varchar(10),a_code&nbsp;varchar(3))<br>declare&nbsp;&nbsp;@b&nbsp;table(a_code&nbsp;varchar(3),b_name&nbsp;varchar(10),b_lastdate&nbsp;datetime)<br><br>insert&nbsp;into&nbsp;@a&nbsp;values&nbsp;('张三','001')<br>insert&nbsp;into&nbsp;@a&nbsp;values&nbsp;('李四','002')<br>insert&nbsp;into&nbsp;@a&nbsp;values&nbsp;('王麻子','003')<br><br>insert&nbsp;into&nbsp;@b&nbsp;values&nbsp;('001','种类1','2007-10-29')<br>insert&nbsp;into&nbsp;@b&nbsp;values&nbsp;('002','种类2','2007-10-30')<br>insert&nbsp;into&nbsp;@b&nbsp;values&nbsp;('001','种类1','2007-10-30')<br>insert&nbsp;into&nbsp;@b&nbsp;values&nbsp;('002','种类3','2007-10-31')<br>insert&nbsp;into&nbsp;@b&nbsp;values&nbsp;('003','种类1','2007-10-20')<br><br>select&nbsp;a_name,<br>max(case&nbsp;b_name&nbsp;when&nbsp;'种类1'&nbsp;then&nbsp;b_lastdate&nbsp;end)&nbsp;[种类1],<br>max(case&nbsp;b_name&nbsp;when&nbsp;'种类2'&nbsp;then&nbsp;b_lastdate&nbsp;end)&nbsp;[种类2],<br>max(case&nbsp;b_name&nbsp;when&nbsp;'种类3'&nbsp;then&nbsp;b_lastdate&nbsp;end)&nbsp;[种类3]<br>from&nbsp;@b&nbsp;b<br> left&nbsp;join&nbsp;@a&nbsp;a&nbsp;on&nbsp;a.a_code=b.a_code&nbsp;<br>group&nbsp;by&nbsp;b_name,a.a_name<br><br>试试看
 
你要说明是什么数据库啊?
 
http://tech.sina.com.cn/n/2007-10-29/0529469256.shtml
 
是mysql数据库
 
dcx0026的是正确的,佩服佩服!!<br>funcy2000没来得及验证。<br><br>谢谢大家。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部