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

求解啊该如何处理

2012-07-29 
求解啊?SELECTname,AVG(a) as a,AVG(b) as b,AVG(c) as c,SUM(CASE WHEN d5 THEN 1 ELSE 0 END) * 100.0

求解啊?
SELECT name, 
AVG(a) as a, 
AVG(b) as b, 
AVG(c) as c,
SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,
SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2
FROM [ta]
GROUP BY [name]
having AVG(a)<=6


UNION ALL
SELECT '统计', 
AVG(a) as a, 
AVG(b) as b, 
AVG(c) as c,
SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,
SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2
FROM 
(SELECT [name], 
AVG(a) as a, 
AVG(b) as b, 
AVG(c) as c,
SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,
SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2
FROM [ta]
GROUP BY [name]
having AVG(a)<=6)
ta


消息 207,级别 16,状态 1,第 17 行
列名 'd' 无效。
消息 207,级别 16,状态 1,第 17 行
列名 'd' 无效。
消息 207,级别 16,状态 1,第 18 行
列名 'd' 无效。
消息 207,级别 16,状态 1,第 18 行
列名 'd' 无效。


怎么办?为什么?

[解决办法]

SQL code
SELECT name,  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d1<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,SUM(CASE WHEN d2>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2FROM [ta]GROUP BY [name]having AVG(a)<=6UNION ALLSELECT '统计',  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d1<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,SUM(CASE WHEN d2>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2FROM  (SELECT [name],  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d1<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,SUM(CASE WHEN d2>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2FROM [ta]GROUP BY [name]having AVG(a)<=6)ta
[解决办法]
SQL code
SELECT name,  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d1,SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d2FROM [ta]GROUP BY [name]having AVG(a)<=6UNION ALLSELECT '统计',  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d1,SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d2FROM  (SELECT [name],  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d1,SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(1) AS d2FROM [ta]GROUP BY [name]having AVG(a)<=6)t
[解决办法]
姐姐搞错了,修改的不是你的原版的,不过也是一样的

SUM(d1) AS d1,
SUM(d2) AS d2 就可以了

SQL code
SELECT name,  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2FROM [ta]GROUP BY [name]having AVG(a)<=6UNION ALLSELECT '统计',  AVG(a) as a,  AVG(b) as b,  AVG(c) as c,SUM(d1) AS d1,SUM(d2) AS d2FROM  (    SELECT [name],      AVG(a) as a,      AVG(b) as b,      AVG(c) as c,    SUM(CASE WHEN d<5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d1,    SUM(CASE WHEN d>=5 THEN 1 ELSE 0 END) * 100.0 / COUNT(d) AS d2    FROM [ta]    GROUP BY [name]    having AVG(a)<=6) ta 

热点排行