用一个sql语句得出结果
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。
able1
月份mon 部门dep 业绩yj
---------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8 --table2
--部门dep 部门名称dname
----------------------------------
-- 01 国内业务一部
-- 02 国内业务二部
-- 03 国内业务三部
-- 04 国际业务四部
--
--table3 (result)
--
--部门dep 一月份 二月份 三月份
----------------------------------------
-- 01 10 null null
-- 02 10 8 null
-- 03 null 5 8
-- 04 null null 9
--------------------------------------------
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。
able1
月份mon 部门dep 业绩yj
---------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8 --table2
--部门dep 部门名称dname
----------------------------------
-- 01 国内业务一部
-- 02 国内业务二部
-- 03 国内业务三部
-- 04 国际业务四部
--
--table3 (result)
--
--部门dep 一月份 二月份 三月份
----------------------------------------
-- 01 10 null null
-- 02 10 8 null
-- 03 null 5 8
-- 04 null null 9
--------------------------------------------
解决方案 »
- 如何在B机的SQL上加一个指向A机SQL的linked Server
- 联表查询 取一条记录
- visio 里面建立数据库模型时, 执行反向工程来显示数据库里面的情况时,数据库里面的表就会添加到页面上,但数据库里面的存储过程不会?
- 存储过程 根据a,b表添加更新c表.~~~~~~~~~~~~~~~~~~
- 怎么用触发器来实现两个到多个数据表的数据一致
- 菜鸟求助,视图生成中遇到的问题
- 请教sql server导入数据的问题。多谢
- 如何将sql server 的驱动打包
- 从一个表中找出符合条件的记录,并更新另一个表的SQL语句如何写
- 在设计数据库时(用sqlserver)遇到的问题,求救!!!
- sql语句中的case when用法?
- ASP程序,SQL Server 2008数据库连接出现问题
max(case when a.mon='一月份' then yj end) as [一月份],
max(case when a.mon='二月份' then yj end) as [二月份],
max(case when a.mon='三月份' then yj end) as [三月份]
from table2 b left join table1 a on a.dep=b.dep
group by b.dep
declare @tb1 table([月份mon] varchar(6),[部门dep] varchar(2),[业绩yj] int)
insert @tb1
select '一月份','01',10 union all
select '一月份','02',10 union all
select '一月份','03',5 union all
select '二月份','02',8 union all
select '二月份','04',9 union all
select '三月份','03',8--> 测试数据:@tb2
declare @tb2 table([部门dep] varchar(2),[部门名称dname] varchar(12))
insert @tb2
select '01','国内业务一部' union all
select '02','国内业务二部' union all
select '03','国内业务三部' union all
select '04','国际业务四部'select B.部门名称dname,
sum(CASE A.月份mon WHEN '一月份' THEN 业绩yj ELSE 0 END) AS 一月份,
sum(CASE A.月份mon WHEN '二月份' THEN 业绩yj ELSE 0 END) AS 二月份,
sum(CASE A.月份mon WHEN '三月份' THEN 业绩yj ELSE 0 END) AS 三月份
from @tb1 A,@tb2 B WHERE A.部门dep = B.部门dep
group by B.部门名称dname
--创建临时表
IF OBJECT_ID('tempdb..#temp1') IS NOT NULL
DROP TABLE #temp1
GOCREATE TABLE #temp1
(
mon nvarchar(12),
depID nvarchar(4),
yi int
)IF OBJECT_ID('tempdb..#temp2') IS NOT NULL
DROP TABLE #temp2
GOCREATE TABLE #temp2
(
depID nvarchar(4),
dname nvarchar(30)
)--测试数据
INSERT INTO #temp1
SELECT '一月份','01',10 UNION ALL
SELECT '一月份','02',10 UNION ALL
SELECT '一月份','03',5 UNION ALL
SELECT '二月份','02',8 UNION ALL
SELECT '二月份','04',9 UNION ALL
SELECT '三月份','03',8 INSERT INTO #temp2
SELECT '01','国内业务一部' UNION ALL
SELECT '02','国内业务二部' UNION ALL
SELECT '03','国内业务三部' UNION ALL
SELECT '04','国际业务四部' --查询语句
SELECT A.DEPID,
SUM(CASE WHEN B.mon='一月份' THEN YI END) AS 一月份,
SUM(CASE WHEN B.mon='二月份' THEN YI END) AS 二月份,
SUM(CASE WHEN B.mon='三月份' THEN YI END) AS 三月份
FROM #temp2 A LEFT JOIN #TEMP1 B
ON A.DEPID=B.DEPID
GROUP BY A.DEPID