2014-05-06 20 views
0

我想將運行任何給定查詢時受影響的總行作爲T-SQL查詢中的變量保存。簡而言之,如果我運行的查詢返回2348條記錄,我希望名爲Total的整數變量等於2348.這樣我可以使用if語句,該語句在給定查詢的總行數爲0時運行附加代碼。如何將「受影響的總行數」保存爲整數變量

我已經聲明變量@TOTAL並將其設置爲等於子查詢,它在獨立運行時將返回我希望我的int變量@TOTAL保留的行數。

因此,如果子查詢返回490行,例如,我想int變量@TOTAL等於490

DECLARE @TOTAL int 

set @TOTAL = (select distinct TRADE_REP_ORIG 
from trade_archive 
where error_code = 'r' 
group by TRADE_FIRM_ORIG, TRADE_OFFICE_ORIG, TRADE_REP_ORIG) 

print @TOTAL 

我已經使用子查詢中的count()功能試過,但似乎也不起作用。

回答

1

這應該工作:

DECLARE @TOTAL int 

select @TOTAL = COUNT(DISTINCT TRADE_REP_ORIG) 
from trade_archive 
where error_code = 'r' 

print @TOTAL 

注意,一個GROUP BY選擇不同的值時,對結果沒有影響。

+0

這很好用,並且由於表內數據的性質,它是可預先設定的。只需使用@@ ROWCOUNT就會返回它應該執行的行數,但是使用子查詢以不同的方式對數據進行計數,這是我一開始想要做的。 – FluffyKittens

3

使用@@ROWCOUNT

Select @@ROWCOUNT as Total, * 
From TableName 
+0

這不是在我的情況下必不可少的工作(我不只是試圖對行進行計數,我試圖根據某些標準來聚合表中的特定行),但是我可以肯定地看到@@ ROWCOUNT可以在未來。 – FluffyKittens