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

怎的实现SQL一条语句查询多条信息

2012-12-14 
怎样实现SQL一条语句查询多条信息我举个例子哈:有一个表(R),然后有这几个字段:金额(Money)、税务(Tax)、类型

怎样实现SQL一条语句查询多条信息
我举个例子哈:有一个表(R),然后有这几个字段:金额(Money)、税务(Tax)、类型(Type)。要求:有A级对应的金额和税务,类型(Type)为:A,   B级对应的金额和税务,类型(Type)为B,   C级对应的金额和税务,类型(Type)为:C 。那么要求查询A、B、C级分别对应的税务和金额是多少?用一条SQL实现。我分三条写的话是这样子的:
        Select Money,Tax from R where Type = 'A';
       Select Money,Tax from R where Type = 'B'; 
       Select Money,Tax from R where Type = 'C';    
那么,合成一条SQL呢?        
[最优解释]
我猜想是这样:


 
 SELECT  CASE WHEN type = 'a' THEN [money]
              WHEN type = 'b' THEN [money]
              WHEN type = 'c' THEN [money]
         END [Money] ,
         CASE WHEN type = 'a' THEN Tax
              WHEN type = 'b' THEN Tax
              WHEN type = 'c' THEN Tax
         END Tax
 FROM    R

[其他解释]
想要什么结果? 举例吧
 Select Money,Tax from R where Type in ('A','B','C')
不知道对不?
[其他解释]
select  U_LCInvAmt,U_LCTaxAmt
      (case U_Format when '31' then 'A级别' 
                         when '35' then 'B级别' 
                         when '32' then 'C级别' 
                         when '36' then 'D级别'
                         else '数据错误' end ) as type_Level from [@cps_tbl_OTAX] 
这个吧你应该知道是什么问题的  不能有逗号

[其他解释]
我可不可以这样理解?或者说你需要的结果是这样的?
金额  税务  级别
$10   200   A
$15   229   B
$20   260   C
.....

那么大概的语句是这么的:

select  Money,Tax,
      (case Type when 'A' then 'A级别',  
                 when 'B' then 'B级别' ,
                 when 'C' then 'C级别'
                 else '数据错误' end ) as type_Level


from R


[其他解释]
联合查询语句呀。inner join
[其他解释]
引用:
想要什么结果? 举例吧
 Select Money,Tax from R where Type in ('A','B','C')
不知道对不?

+1
[其他解释]
Select Money,Tax from R where Type = 'A' union all
       Select Money,Tax from R where Type = 'B'union all
       Select Money,Tax from R where Type = 'C'; 

[其他解释]
引用:
我可不可以这样理解?或者说你需要的结果是这样的?
金额  税务  级别
$10   200   A
$15   229   B
$20   260   C
.....

那么大概的语句是这么的:
SQL code?1234567select  Money,Tax,      (case Type when 'A' then 'A级别',          ……



非常感谢你的回复!不过我用的时候有点错误:
select  U_LCInvAmt,U_LCTaxAmt
      (case U_Format when '31' then 'A级别' ,
                         when '35' then 'B级别' ,
                         when '32' then 'C级别' ,
                         when '36' then 'D级别'
                         else '数据错误' end ) as type_Level from [@cps_tbl_OTAX] 
系统会提示:“,”处有语法错误,是第一个'A级别',这个逗号处有错误!!!请问是很么原因?
[其他解释]
引用:
我猜想是这样:SQL code?1234567891011   SELECT  CASE WHEN type = 'a' THEN [money]              WHEN type = 'b' THEN [money]              WHEN type = 'c' THEN [money]         END [Money] ,        ……


非常感谢你的回复,不过有点错误,第一个case完全正确,可是再用一个case时就会提示第二个case处有语法错误,也就是说去掉第二个case...END 是完全正确的,难道只能用一个Case?那只能查一个字段了。。。怎么办啊?
[其他解释]
引用:
想要什么结果? 举例吧
 Select Money,Tax from R where Type in ('A','B','C')
不知道对不?


呵呵,谢谢!你这一个没有错误,完全能用。
[其他解释]
select Money,Tax from R where Type in ('A','B','C')


这样结果相当于你那三条语句
[其他解释]

引用:
SQL code?1234567select  U_LCInvAmt,U_LCTaxAmt      (case U_Format when '31' then 'A级别'                          when '35' then 'B级别'                          when '32' then 'C级别'         ……

哈哈哈哈哈哈,感谢版主大人!可以了~~~~
[其他解释]
 其实你就是要累加是吧?
[其他解释]
引用:
其实你就是要累加是吧?

恩,不过请问一下,你上面写的那一段有一点点小错误,为什么只能第一个case管用,下面的case就出错了,提示第二个case附近有语法错误,应该怎么改正一下?
[其他解释]
有一点疑问?假设类型相同的税务和金额不同,怎么搞?
select r.* from R where typ in ('A','B','C') 可以达到要求!
我测试的结果如下:
create table R (money decimal(10,2) not null,tax nvarchar(10) not null,typ nvarchar(5) not null)
insert into R values(10.5,'200','A')
insert into R values(210.5,'200','B')
insert into R values(130.5,'200','c')
insert into R values(410.5,'200','d')
insert into R values(1140.5,'200','e')
insert into R values(210.5,'400','a')
insert into R values(130.5,'300','b')
insert into R values(110.5,'400','c')
insert into R values(1120.15,'300','d')
insert into R values(1120.5,'200','e')
insert into R values(1012.5,'200','a')
select r.* from R where typ in ('A','B','C')
[其他解释]
我用我本地的表来测试了一下,没报错,你试试把type用中括号包起来,因为这个是关键字。可能你的数据不支持我这种写法
   
 SELECT  CASE WHEN [type] = 'a' THEN [money] 
              WHEN [type]= 'b' THEN [money] 
              WHEN [type]= 'c' THEN [money] 
         END [Money] , 
         CASE WHEN [type]= 'a' THEN Tax 
              WHEN [type]= 'b' THEN Tax 
              WHEN [type]= 'c' THEN Tax 
         END Tax 
 FROM    R

[其他解释]
[quote=引用:]
唉!真是仰天哭笑,错误在我,是我漏了第一个END [NOMEY]之后的','号,唉,就一个小逗号而已,没想到竟然出错了,谢谢了!!!
[其他解释]
引用:
有一点疑问?假设类型相同的税务和金额不同,怎么搞?
select r.* from R where typ in ('A','B','C') 可以达到要求!
我测试的结果如下:


create table R (money decimal(10,2) not null,tax nvarchar(10) not null,typ nvarchar(5) not null)
insert int……

啥意思?

热点排行