2013-07-25 25 views
0

基本上我有兩個查詢輸出:從表的計數結果中減去在每行中的表2 1

首先查詢給出總計數:

select COUNT(*) as 'TotalStudents' from StudentLists 

這給出計數設的輸出說50 。

第二個查詢:

CREATE TABLE #TMP(week_date date,cused int) 
insert into #TMP(cused ,week_date) 
select * 
from 
(select studentid, clientdate 
    from table1 where DATEDIFF(DAY,clientdate,GETDATE()) <= 7 
    union 
    select studentid, DATE 
    from table2 where DATEDIFF(DAY,DATE,GETDATE()) <= 7 
) a 

select week_date ,COUNT(distinct cused)as 'Totalcused ' from #TMP 
group by week_date 

第二個查詢給我的輸出:

week_date Totalcused 
2013-07-18 11 
2013-07-19 18 
2013-07-20 23 
2013-07-22 9 
2013-07-23 19 

現在,我想扣除查詢1中totalstudents封閉的每一行。

我預期的輸出應該是,

week_date Totalcused nused 
2013-07-18 11  39 
2013-07-19 18  32 
2013-07-20 23  27 
2013-07-22 9   41 
2013-07-23 19  31 

如何我可以將第一查詢結果這個查詢:

select week_date ,COUNT(distinct cused)as 'Totalcused ' from #TMP 
group by week_date 

得到上面的輸出。 沒有公共列名稱來加入這些第一個和第二個查詢。

第一個查詢輸出值會每天都在不停地變化,輸出始終不是一個常數值。

回答

2

將Total指定給一個變量,並在第二個查詢中使用該變量。

喜歡的東西

DECLARE @Total INT 

select @Total = COUNT(*) from StudentLists 

CREATE TABLE #TMP(week_date date,cused int) 
insert into #TMP(cused ,week_date) 
select * 
from 
(select studentid, clientdate 
    from table1 where DATEDIFF(DAY,clientdate,GETDATE()) <= 7 
    union 
    select studentid, DATE 
    from table2 where DATEDIFF(DAY,DATE,GETDATE()) <= 7 
) a 

select week_date , 
     COUNT(distinct cused)as 'Totalcused ', 
     @Total - COUNT(distinct cused) as 'nused' 
from #TMP 
group by week_date 
+0

如果你每天運行查詢,結果會改變。您是否希望將這些值存儲在表格中,並希望它們每天都在變化? –

相關問題