CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

該select 語句怎樣寫

楼主MCHorse(mchorse)2004-11-03 20:59:43 在 MS-SQL Server / 基础类 提问

將t1中的數據由縱向變為橫向顯示,t1中包含bh、xu、desp,t1中,在t1中bh相同的記錄最多為3條,有時可能為2條,有時可能為1條;  
  要查詢出來的顯示的形式為bh   、desp1、desp2   、desp3,t2中不包含t1中的xu,當t1為如下表時,  
   
  t1中的記錄  
  bh                               xu                             desp  
  M001                         1                                   aaa  
  M001                         2                                   a  
  M001                         3                                   b  
  M002                         1                                   c  
  M002                         2                                   a  
  M003                         1                                   2  
  M004                         1                                   dd  
  M004                         2                                   ff  
   
  查詢後應顯示的記錄為  
  bh                                 desp1                           desp2                           desp3  
  M001                             aaa                                 a                                     b  
  M002                             c                                     a  
  M003                             2  
  M004                             dd                                   ff  
   
  請問該查詢語句怎樣寫? 问题点数:20、回复次数:5Top

1 楼yelook(香槟酒)回复于 2004-11-03 21:12:36 得分 10

select   bh,  
  max(case   when   xu=1   then   desp   else   ''   end)   as   desp1,  
  max(case   when   xu=2   then   desp   else   ''   end)   as   desp2,  
  max(case   when   xu=3   then   desp   else   ''   end)   as   desp3  
    from   t1   group   by   bhTop

2 楼biliky()回复于 2004-11-03 21:29:58 得分 0

select   distinct   bh,   (select   nvl(desp,null)     from   t1   where   xu=1   and   bh=t.bh)   desp1,  
                        (select   nvl(desp,null)     from   t1   where   xu=2   and   bh=t.bh)   desp2,  
                        (select   nvl(desp,null)     from   t1   where   xu=3and   bh=t.bh)   desp3  
  from   t1   t;Top

3 楼MCHorse(mchorse)回复于 2004-11-03 21:41:23 得分 0

nvl是函數嗎?Top

4 楼biliky()回复于 2004-11-03 22:11:10 得分 0

搞错了,我以为这是oracle版。nvl是oracle的库函数,判断第一次参数如果不存在则取第二个参数的值。相当于sql   server的函数isnull()。Top

5 楼biliky()回复于 2004-11-03 22:16:33 得分 10

select   distinct   bh,(select   desp   from   t1   where   xu=1   and   bh=t.bh)   desp1,  
  (select   desp   from   t1   where   xu=2   and   bh=t.bh)   desp2,  
  (select   desp   from   t1   where   xu=3   and   bh=t.bh)   desp3   from   t1   t;Top

相关问题

  • select 语句怎么写?
  • 這條SELECT語句怎寫?????
  • 这句select语句怎么写??
  • 怎样写这个select语句?
  • 这个SELECT语句该怎样写?
  • 怎么写这个SELECT语句!
  • 这条Select case语句该怎么写
  • 怎样在DAO用SELECT 语句?
  • 这个select语句怎么写?
  • 怎样写这样的select语句

关键词

  • sp1
  • null
  • desp
  • bh
  • xu
  • 記錄
  • from t1where
  • nvl
  • 顯示
  • then desp else

得分解答快速导航

  • 帖主:MCHorse
  • yelook
  • biliky

相关链接

  • SQL Server类图书

广告也精彩

反馈

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