CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

我交叉查询都没做过,大家帮我看一下啊,这个SQL怎么弄呢,我试了好久,也没做出来啊.(表结构和数据如下)

楼主badliao()2005-04-02 11:33:14 在 MS-SQL Server / 基础类 提问

--基本表:     Groupinfo      
  create   table   Groupinfo(groupid   int,groupname   nvarchar(20))  
  insert   into   Groupinfo   values(1,'A组')  
  insert   into   Groupinfo   values(2,'B组')  
   
  --赛况表:     Match  
  create   table   Match(groupid   int,date   datetime,score   nvarchar(20))  
  insert   into   Match   values(1,'2005-2-9','韩国   2-0   科威特')  
  insert   into   Match   values(1,'2005-3-25','沙特   2-0   韩国')  
  insert   into   Match   values(1,'2005-3-30','韩国   2-1   乌兹')  
  insert   into   Match   values(2,'2005-2-9','日本   2-1   朝鲜')  
  insert   into   Match   values(2,'2005-3-25','伊朗   2-1   日本')  
  insert   into   Match   values(2,'2005-3-30','朝鲜   0-2   伊朗')  
   
  我要的结果是:  
  我试了好久,也没做出来啊,大家帮我啊  
       
                                    A组                                         B组  
          2005-2-9         韩国   2-0   科威特                 日本   2-1   朝鲜  
          2005-3-25       沙特   2-0   韩国                     伊朗   2-1   日本  
          2005-3-30       韩国   2-1   乌兹                     朝鲜   0-2   伊朗 问题点数:60、回复次数:5Top

1 楼zjcxc(邹建)回复于 2005-04-02 11:42:19 得分 50

--基本表:     Groupinfo      
  create   table   Groupinfo(groupid   int,groupname   nvarchar(20))  
  insert   into   Groupinfo   values(1,'A组')  
  insert   into   Groupinfo   values(2,'B组')  
   
  --赛况表:     Match  
  create   table   Match(groupid   int,date   datetime,score   nvarchar(20))  
  insert   into   Match   values(1,'2005-2-9','韩国   2-0   科威特')  
  insert   into   Match   values(1,'2005-3-25','沙特   2-0   韩国')  
  insert   into   Match   values(1,'2005-3-30','韩国   2-1   乌兹')  
  insert   into   Match   values(2,'2005-2-9','日本   2-1   朝鲜')  
  insert   into   Match   values(2,'2005-3-25','伊朗   2-1   日本')  
  insert   into   Match   values(2,'2005-3-30','朝鲜   0-2   伊朗')  
  go  
   
  declare   @s   nvarchar(4000)  
  set   @s=''  
  select   @s=@s+','+quotename(groupname)+'=max(case   groupid   when   '+rtrim(groupid)+'   then   score   end)'  
  from   Groupinfo  
  exec('select   replace(convert(char(10),date,120),''-0'',''-'')'+@s+'  
  from   Match   group   by   replace(convert(char(10),date,120),''-0'',''-'')')  
  go  
   
  drop   table   Groupinfo,Match  
   
  /*--结果  
                                              A组                                             B组  
  ---------------------   ------------------------   ------------------  
  2005-2-9                             韩国   2-0   科威特                       日本   2-1   朝鲜  
  2005-3-25                           沙特   2-0   韩国                           伊朗   2-1   日本  
  2005-3-30                           韩国   2-1   乌兹                           朝鲜   0-2   伊朗  
  --*/Top

2 楼xluzhong(Ralph)回复于 2005-04-02 11:58:57 得分 10

declare   @s   nvarchar(4000)  
  set   @s=''  
  select   @s=@s+','+quotename(groupname)+'=max(case   groupid   when   '+rtrim(groupid)+'   then   score   end)'  
  from   Groupinfo  
  exec('select   replace(convert(char(10),date,120),''-0'',''-'')'+@s+'  
  from   Match   group   by   replace(convert(char(10),date,120),''-0'',''-'')')  
  Top

3 楼badliao()回复于 2005-04-02 13:30:34 得分 0

老大,我按了你的方法试了一下,可以啊,但有个问题是,我如果加了一条记录,它怎么会列出null的行来,它是按date来group   by的吗,肯定是这里出了点小问题吧  
   
   
  --基本表:     Groupinfo      
  create   table   Groupinfo(groupid   int,groupname   nvarchar(20))  
  insert   into   Groupinfo   values(1,'A组')  
  insert   into   Groupinfo   values(2,'B组')  
  --后面这条是新加的  
  insert   into   Groupinfo   values(3,'C组')  
   
  --赛况表:     Match  
  create   table   Match(groupid   int,date   datetime,score   nvarchar(20))  
  insert   into   Match   values(1,'2005-2-9','韩国   2-0   科威特')  
  insert   into   Match   values(1,'2005-3-25','沙特   2-0   韩国')  
  insert   into   Match   values(1,'2005-3-30','韩国   2-1   乌兹')  
  insert   into   Match   values(2,'2005-2-9','日本   2-1   朝鲜')  
  insert   into   Match   values(2,'2005-3-25','伊朗   2-1   日本')  
  insert   into   Match   values(2,'2005-3-30','朝鲜   0-2   伊朗')  
   
   
  --后面这条是新加的  
  insert   into   Match   values(3,'2005-3-10','朝鲜   0-1   伊朗')  
   
   
  我运行的脚本:  
   
  declare   @s   nvarchar(4000)  
  set   @s=''  
  select   @s=@s+','+quotename(groupname)+'=max(case   groupid   when   '+rtrim(groupid)+'   then   score   end)'  
  from   Groupinfo   where   groupid   in   ('1','2')    
  --其中加了   选择1,2两组的条件  
  exec('select   replace(convert(char(10),date,120),''-0'',''-'')'+@s+'  
  from   Match   group   by   replace(convert(char(10),date,120),''-0'',''-'')')  
   
  其  
   
  我运行后变成:  
     
                                  A                                 B  
    2005-2-9       韩国   2-0   科威特       日本   2-1   朝鲜  
    2005-3-10       null                               null  
    2005-3-25       沙特   2-0   韩国           伊朗   2-1   日本  
    2005-3-30       韩国   2-1   乌兹           朝鲜   0-2   伊朗  
   
  这里面的第二行不是我想要的呀  
   
  Top

4 楼zjcxc(邹建)回复于 2005-04-02 14:09:10 得分 0

declare   @s   nvarchar(4000)  
  set   @s=''  
  select   @s=@s+','+quotename(groupname)+'=max(case   groupid   when   '+rtrim(groupid)+'   then   score   end)'  
  from   Groupinfo   where   groupid   in   ('1','2')    
  --其中加了   选择1,2两组的条件  
  exec('select   replace(convert(char(10),date,120),''-0'',''-'')'+@s+'  
  from   Match    
  where   groupid   in   (''1'',''2'')       --***这里也要加条件"选择1,2两组的条件"  
  group   by   replace(convert(char(10),date,120),''-0'',''-'')')Top

5 楼badliao()回复于 2005-04-02 15:38:07 得分 0

谢谢老大!Top

相关问题

  • 我交叉查询都没做过,大家帮我看一下啊,这个SQL怎么弄呢,我试了好久,也没做出来啊.(表结构和数据如下)
  • 急!急!内连接两个表,查询未遂,高手来帮忙看一下我的sql语句
  • 功夫不深,大家帮忙看一下SQL语句代码,为什么查询结果不同!!???
  • 请看一下如下的程序。
  • 请各位看一下如下错误的sql语句如何更改正确实现需要的功能
  • 请各位看一下如下错误的sql语句如何更改正确实现需要的功能
  • 请看一下这个SQL语句
  • sql 问题,帮帮忙看一下
  • 帮忙看一下。我这sql语句。。。
  • 各位幫我看一下SQL語句

关键词

  • 日本
  • groupinfo
  • 伊朗
  • 朝鲜
  • 韩国
  • 表
  • match
  • insert
  • nvarchar
  • table

得分解答快速导航

  • 帖主:badliao
  • zjcxc
  • xluzhong

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo