2013-09-25 114 views
-1

這些查詢結合兩個以上的SQL查詢

select count(sales) as weeksales from salesdairy where propertytype in ('item1') and DATEPART(wk, time)=DATEPART(wk,getdate()) 
select count(sales) as monthsales from salesdairy where propertytype in ('item1') and MONTH(time) = MONTH(getdate()) 
select count(sales) as yearsales from salesdairy where propertytype in ('item1') and YEAR(time) = YEAR(getdate()) 

是更多鈔票來獲得結合所有這些查詢,以獲得輸出

weeksales monthsales yearsales

任何想法?

+0

你可以聯合他們或做子查詢。 – Elias

+0

在這裏回答:http://stackoverflow.com/questions/17411594/gathering-counts-of-multiple-tables-in-a-single-query/17411676#17411676 –

回答

2
SELECT COUNT(CASE WHEN DATEPART(wk, time) = DATEPART(wk, getdate()) THEN SALES ELSE NULL END) weeksales, 
     COUNT(CASE WHEN MONTH(time) = MONTH(getdate()) THEN SALES ELSE NULL END) monthsales, 
     COUNT(CASE WHEN YEAR(time) = YEAR(getdate()) THEN SALES ELSE NULL END) yearsales 
FROM salesdairy 
WHERE propertytype in ('item1') 

但我想你想使用SUM()而不是COUNT()因爲SUM()計算列的總價值,同時COUNT()計數的一列非空值的總數。

2
select sum(case when DATEPART(wk, time) = DATEPART(wk,getdate()) 
       then sales 
       else 0 
      end) as weeksales, 
     sum(case when MONTH(time) = MONTH(getdate()) 
       then sales 
       else 0 
      end) as monthsales, 
     sum(case when YEAR(time) = YEAR(getdate()) 
       then sales 
       else 0 
      end) as yearsales 
from salesdairy 
where propertytype in ('item1')