select T1.a,d,e from (
SELECT a,sum(c) as d FROM TABLE
where b=0
GROUP BY a) as T1
inner join
(SELECT a,sum(c) as e FROM TABLE
where b=1
GROUP BY a) as T2 on T1.a=T2.a
帮忙测试下我的代码对不
经测试 对的
楼上的语句是ok的 思路也很清晰的说,我搞了半天也搞出来的,但是语句还是比较渣,楼主用楼上的吧
PS:最后一行bumen得该成a ==> on T1.a=T2.a
呵呵,我写了后改字段名字没有改完,结合你的,O(∩_∩)O~
select
a,
case b when 0 then c end as 经理人数,
case b when 1 then c end as 员工人数
from table
order by a
不知道可以不 目前手头没工具,所以没测试
写错了 把order by 改成group by
@┢┦偉: 你这个不行,group by一列,结果查三列 肯定不行
按你这个思路写 还得连接本身再查一次,更麻烦,还是上面的答案比较好,
SELECT temp1.a,经理人数,普通员工人数 from
(SELECT a,c AS 经理人数 from TABLE
WHERE B=0) as temp1
inner join
(SELECT a,c AS 普通员工人数 from TABLE
WHERE B=1) as temp2
on temp1.a=temp2.a
可以查出结果,但是仅能查楼主要求的这个,随便再增加几列,你的语句就不行了
select
a,
case b when 0 then c end as 经理人数,
case b when 1 then c end as 员工人数
from table
groupby a
感觉这种比较清晰明了点
清晰倒是清晰,但是查不出楼主要的结果
这语句查的结果:
A 5 NULL
B 6 NULL
A NULL 5
B NULL 6
@心态要好: 呵呵 手头没工具 原来写过这种语句
@心态要好:
@壹卄の➹: 回复怎么插入图片?
我点插入图片那个按钮,出来只能链接网上的图片啊,无法本地上传
@心态要好:
楼上的做个分组汇总应该就可以了。
select AA.a,SUM(ISNULL(经理人数,0)) 经理人数, SUM(ISNULL(员工人数,0)) 员工人数 from ( select a, case b when 0 then c end as 经理人数, case b when 1 then c end as 员工人数 from table group by a) AA group by AA.a
行专列问题还可以使用 PIVOT
CREATE TABLE #table ( a VARCHAR(10), b INT, c INT ) INSERT INTO #table ( a, b, C ) SELECT 'A', 0, 5 UNION SELECT 'B', 0, 6 UNION SELECT 'A', 1, 5 UNION SELECT 'B', 1, 6 SELECT A, [0] 员工人数, [1] 经理人数 FROM ( SELECT a, c, b FROM #table ) AS SourceTable PIVOT ( SUM(c) FOR b IN ( [0], [1] ) ) AS PivotTable DROP TABLE #table
参考
http://msdn.microsoft.com/zh-cn/library/ms177410%28v=SQL.90%29.aspx
嗯,下面这个写法好
select a,
sum(case b when 0 than c end) as d,
sum(case b when 1 than c end) as e
from table
group by a
来晚了....