应该是交叉表吧参考USE Northwind
GOCREATE TABLE Pivot
( Year      SMALLINT,
  Quarter   TINYINT, 
  Amount      DECIMAL(2,1) )
GO
INSERT INTO Pivot VALUES (1990, 1, 1.1)
INSERT INTO Pivot VALUES (1990, 2, 1.2)
INSERT INTO Pivot VALUES (1990, 3, 1.3)
INSERT INTO Pivot VALUES (1990, 4, 1.4)
INSERT INTO Pivot VALUES (1991, 1, 2.1)
INSERT INTO Pivot VALUES (1991, 2, 2.2)
INSERT INTO Pivot VALUES (1991, 3, 2.3)
INSERT INTO Pivot VALUES (1991, 4, 2.4)
GO下面是用于创建旋转结果的 SELECT 语句:SELECT Year, 
    SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
    SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
    SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
    SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
FROM Northwind.dbo.Pivot
GROUP BY Year
GO

解决方案 »

  1.   

    create view as 
    select 部门,sum(1) as 人数,总工资=isnull(sum(正式员工工资),0)+isnull(试用员工工资,0),sum(正式员工工资),sum(试用员工工资) from 
    (select 姓名,部门,正式员工工资=(case when 类型='正式' then 工资 else null end),
                      试用员工工资=(case when 类型='试用' then 工资 else null end)  from 原表 ) a group by 部门
      

  2.   

    --差了视图名称
    create view viewname as 
    select 部门,sum(1) as 人数,总工资=isnull(sum(正式员工工资),0)+isnull(试用员工工资,0),sum(正式员工工资),sum(试用员工工资) from 
    (select 姓名,部门,正式员工工资=(case when 类型='正式' then 工资 else null end),
                      试用员工工资=(case when 类型='试用' then 工资 else null end)  from 原表 ) a group by 部门
      

  3.   

    case when 类型='正式' then 工资 else null end
    中null转成0
    可省
    isnull(col,0)
      

  4.   

    哦,谢谢了,又把case给忘了,不然总觉得怎么写不出