用临时表实现多表数据的统计
2010-03-01 20:15
225 查看
方法一:
--查询宿舍楼中的空宿舍
IF(@FunctionName='EmptyDormtory')
BEGIN
--SELECT StW_宿舍.ID,
-- StW_宿舍.宿舍楼ID--,
---- StW_宿舍.入住人数
--INTO #Temp1
--FROM StW_宿舍
--WHERE(StW_宿舍.入住人数=0)
SELECT StW_宿舍楼.ID AS 宿舍楼ID,
StW_宿舍楼.名称 AS 宿舍楼名称,
StW_宿舍楼.宿舍总数,
StW_宿舍.ID AS 宿舍ID,
StW_宿舍.入住人数
INTO #Temp
FROM StW_宿舍楼
INNER JOIN StW_宿舍
ON(StW_宿舍.宿舍楼ID=StW_宿舍楼.ID AND StW_宿舍.入住人数=0)
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
--GROUP BY StW_宿舍楼.ID,StW_宿舍楼.名称, StW_宿舍楼.宿舍总数,StW_宿舍.ID,StW_宿舍.入住人数
SELECT 宿舍楼名称,
宿舍总数,
COUNT(宿舍楼ID) AS 空宿舍总数,
(宿舍总数-COUNT(宿舍楼ID)) AS 入住宿舍总数
FROM #Temp
GROUP BY 宿舍楼名称,宿舍总数--,COUNT(宿舍楼ID)
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
DROP TABLE #Temp
END
方法二:
--查询宿舍楼中的空宿舍
IF(@FunctionName='EmptyDormtory')
BEGIN
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
--GROUP BY StW_宿舍楼.ID,StW_宿舍楼.名称, StW_宿舍楼.宿舍总数,StW_宿舍.ID,StW_宿舍.入住人数
select distinct 宿舍楼ID,
count(*) as 空宿舍
into #Temp空宿舍
from StW_宿舍
where StW_宿舍.入住人数=0-- and 宿舍楼ID is not null and 宿舍楼ID <>''
group by 宿舍楼ID
select distinct 宿舍楼ID,
count(*) as 宿舍
into #Temp宿舍
from StW_宿舍
--where StW_宿舍.入住人数-- and 宿舍楼ID is not null and 宿舍楼ID <>''
group by 宿舍楼ID
SELECT StW_宿舍楼.ID AS 宿舍楼ID,
StW_宿舍楼.名称 AS 宿舍楼名称,
#Temp宿舍.宿舍 as 宿舍总数,
#Temp空宿舍.空宿舍,
#Temp宿舍.宿舍 - #Temp空宿舍.空宿舍 as 已住宿舍
from StW_宿舍楼
inner join #Temp宿舍
on StW_宿舍楼.ID = #Temp宿舍.宿舍楼ID
inner join #Temp空宿舍
on StW_宿舍楼.ID = #Temp空宿舍.宿舍楼ID
DROP TABLE #Temp宿舍
DROP TABLE #Temp空宿舍
END
--查询宿舍楼中的空宿舍
IF(@FunctionName='EmptyDormtory')
BEGIN
--SELECT StW_宿舍.ID,
-- StW_宿舍.宿舍楼ID--,
---- StW_宿舍.入住人数
--INTO #Temp1
--FROM StW_宿舍
--WHERE(StW_宿舍.入住人数=0)
SELECT StW_宿舍楼.ID AS 宿舍楼ID,
StW_宿舍楼.名称 AS 宿舍楼名称,
StW_宿舍楼.宿舍总数,
StW_宿舍.ID AS 宿舍ID,
StW_宿舍.入住人数
INTO #Temp
FROM StW_宿舍楼
INNER JOIN StW_宿舍
ON(StW_宿舍.宿舍楼ID=StW_宿舍楼.ID AND StW_宿舍.入住人数=0)
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
--GROUP BY StW_宿舍楼.ID,StW_宿舍楼.名称, StW_宿舍楼.宿舍总数,StW_宿舍.ID,StW_宿舍.入住人数
SELECT 宿舍楼名称,
宿舍总数,
COUNT(宿舍楼ID) AS 空宿舍总数,
(宿舍总数-COUNT(宿舍楼ID)) AS 入住宿舍总数
FROM #Temp
GROUP BY 宿舍楼名称,宿舍总数--,COUNT(宿舍楼ID)
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
DROP TABLE #Temp
END
方法二:
--查询宿舍楼中的空宿舍
IF(@FunctionName='EmptyDormtory')
BEGIN
--WHERE(StW_宿舍楼.ID IN(SELECT * FROM dbo.[StW_SplitStr](@mID1,@mID2,@mID3,@mID4,@mID5,@mID6,@mID7,@mID8,@mID9,@mID10,':')))
--GROUP BY StW_宿舍楼.ID,StW_宿舍楼.名称, StW_宿舍楼.宿舍总数,StW_宿舍.ID,StW_宿舍.入住人数
select distinct 宿舍楼ID,
count(*) as 空宿舍
into #Temp空宿舍
from StW_宿舍
where StW_宿舍.入住人数=0-- and 宿舍楼ID is not null and 宿舍楼ID <>''
group by 宿舍楼ID
select distinct 宿舍楼ID,
count(*) as 宿舍
into #Temp宿舍
from StW_宿舍
--where StW_宿舍.入住人数-- and 宿舍楼ID is not null and 宿舍楼ID <>''
group by 宿舍楼ID
SELECT StW_宿舍楼.ID AS 宿舍楼ID,
StW_宿舍楼.名称 AS 宿舍楼名称,
#Temp宿舍.宿舍 as 宿舍总数,
#Temp空宿舍.空宿舍,
#Temp宿舍.宿舍 - #Temp空宿舍.空宿舍 as 已住宿舍
from StW_宿舍楼
inner join #Temp宿舍
on StW_宿舍楼.ID = #Temp宿舍.宿舍楼ID
inner join #Temp空宿舍
on StW_宿舍楼.ID = #Temp空宿舍.宿舍楼ID
DROP TABLE #Temp宿舍
DROP TABLE #Temp空宿舍
END
相关文章推荐
- C#用DataTable实现Group by数据统计
- 基于Android MPAndroidChart实现腾讯QQ群数据统计报表核心功能
- 网站统计中的数据收集原理及实现
- 网站统计中的数据收集原理及实现
- shell脚本实现系统监视统计与数据备份
- java实现各种数据统计图(柱形图,饼图,折线图)
- jQuery实现统计表格列数据--海之澜
- 网站统计中的数据收集原理及实现
- 实现JD二级域名数据的统计
- 使用Matlab从Excel中读取数据并实现回归统计计算
- .net实现统计txt记事本消费单的数据
- PHP在实现统计数据时使用到的时间段
- oracle 实现按周,月,季度,年查询统计数据
- 使用Python实现子区域数据分类统计
- 使用Python实现子区域数据分类统计
- 用临时表代替游标实现多条数据的动态更新
- 网站统计中的数据收集原理及实现
- Spark Streaming 实现数据实时统计案例
- 比较两种方法实现数据统计效果
- JS--网站统计中的数据收集原理及实现