2009-09-15 82 views
0

這可能是一個非常簡單的問題,但我不經常寫存儲過程和我有點迷惑......存儲過程:返回多個列而不是多個記錄集?

做各種東西后,SP的結論位通過返回計數或總和結束來自幾個不同的表格。明顯的做法是:

select SUM(ThisCol) as ThisResult from... 
select SUM(ThatCol) as ThatResult from... 
select count(DISTINCT OtherCol) as OtherResult from... 

當然,這會創建多個記錄集 - 每個選擇一個加一個包含零。這有點傻,因爲每個記錄集只包含一個值。我更喜歡用多列返回單個記錄集:ThisResult,ThatResult和OtherResult。

這可能嗎?

+0

謝謝! najmeddine,Kane和David Andres的回答都很好。我選擇了一個變量作爲最好的變量。 – 2009-09-15 11:19:31

回答

2

可以使用變量

DECLARE @thisResult INT 
DECLARE @thatResult INT 
DECLARE @otherResult INT 

select @thisResult = SUM(ThisCol) as ThisResult from... 
select @thatResult = SUM(ThatCol) as ThatResult from... 
select @otherResult = count(OtherCol) as OtherResult from... 

SELECT @thisResult AS 'thisResult', @thatResult AS 'thatResult', @otherResult AS 'otherResult' 
+0

我不得不從select語句中省略「as ThisResult」等 - 然後它完全符合我的需要 - 謝謝! – 2009-09-15 11:20:05

1
SELECT T1.ThisResult, T2.ThatResult, T3.OtherResult 
    FROM (select SUM(ThisCol) as ThisResult from...) T1, 
     (select SUM(ThatCol) as ThatResult from...) T2, 
     (select count(DISTINCT OtherCol) as OtherResult from...) T3 

由於每個表只包含1column & 1的值,你做的所有3個交叉聯接,並把每個值在一列中的結果表。

0

如果您使用的是SQL Server,則可以再次選擇這些數量作爲您的最後一條語句。

Select ThisResult, ThatResult, OtherResult 

您不必指定表

相關問題