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

求sql怎么写

2012-12-17 
求sql如何写记录如下:序号 名称 金额1A552A(1)553B444B(2)44能不能用1条group语句求出如下结果A110B88求高

求sql如何写
记录如下:
序号 名称 金额
1   A     55
2   A(1)  55
3   B     44
4   B(2)  44

能不能用1条group语句求出如下结果

A  110
B  88

求高手赐教。
[最优解释]
忘了处理没有括号的那些,这个可以了

SELECT  CASE WHEN CHARINDEX('(', 名称, 1)=0 THEN 名称 ELSE SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1 )END  名称 ,
         SUM(金额) 金额
 FROM    TB
 GROUP BY CASE WHEN CHARINDEX('(', 名称, 1)=0 THEN 名称 ELSE SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1 )END 
 
 
[其他解释]

USE tempdb;
/*
CREATE TABLE t1
(
序号 INT NOT NULL,
名称 NVARCHAR(10) NOT NULL,
金额 INT NOT NULL
);

INSERT INTO t1(序号,名称,金额) VALUES(1,'A',55),(2,'A(1)',55),(3,'B',44),(4,'B(2)',44);
*/
SELECT 
t2.Name AS 名称,
SUM(t2.金额) AS 金额合计
FROM
(
SELECT 
*,
CASE 
WHEN CHARINDEX('(',名称,1) > 0 THEN SUBSTRING(名称,1,CHARINDEX('(',名称,1)-1)
WHEN CHARINDEX('(',名称,1) = 0 THEN 名称 
END AS Name
FROM t1
) AS t2
GROUP BY t2.Name

[其他解释]
也就是在group by 的时候忽略括号里面的内容,然后进行sum
[其他解释]
SELECT  SUBSTRING(名称, 1) 名称 ,
         SUM(金额) 金额
 FROM    TB
 GROUP BY SUBSTRING(名称, 1)

[其他解释]
比较严谨的方法:
SELECT  SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1) 名称 ,
         SUM(金额) 金额
 FROM    TB
 GROUP BY SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1)

[其他解释]
好像不对吧,向 substring 函数传递了无效的 length 参数。
[其他解释]
引用:
比较严谨的方法:SQL code?1234SELECT  SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1) 名称 ,         SUM(金额) 金额 FROM    TB GROUP BY SUBSTRING(名称, 1, CHARINDEX('(', 名称, 1)-1)

错误提示如下:
向 substring 函数传递了无效的 length 参数。
[其他解释]
DBA_Huangzj:而且这种只能统计出A(1),B(1)这一类的数据,A,B的数据就没统计上.
[其他解释]
谢谢,
散分,散分
[其他解释]

--创建表以及初始化数据
IF(OBJECT_ID('TA','U') IS NOT NULL) DROP TABLE TA


CREATE TABLE TA(ID INT ,TName VARCHAR(10),Price MONEY)
INSERT INTO TA
SELECT 1,'A',55 UNION ALL
SELECT 2,'A(1)',55 UNION ALL
SELECT 3,'B',44 UNION ALL
SELECT 3,'B(2)',44 UNION ALL
SELECT 4,'BB2(2)',44  
 
--查询
SELECT A.TName,SUM(A.Price) AS SumPrice FROM (
SELECT CASE WHEN  CHARINDEX('(',TName)>0 THEN LEFT(TName,CHARINDEX('(',TName)-1)
   ELSE TName END  AS TName,Price
FROM TA )AS A
GROUP BY TName

--查询结果
TName      SumPrice
---------- ---------------------
A          110.00
B          88.00
BB2        44.00

(3 行受影响)

热点排行