怎样实现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 [其他解释]
+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';
[其他解释]
非常感谢你的回复!不过我用的时候有点错误: 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级别',这个逗号处有错误!!!请问是很么原因? [其他解释]
呵呵,谢谢!你这一个没有错误,完全能用。 [其他解释] select Money,Tax from R where Type in ('A','B','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