SQL Server存储过程只返回一个值

时间:2016-12-09 20:38:13

标签: sql-server stored-procedures

我在返回存储过程时遇到一些问题,我需要所有选择才能创建图表。

这是我的程序:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[LastWeekQuotesByAssociate]
AS
BEGIN
    SELECT 
        networkid, COUNT(isQuoteComplete) as Total 
    FROM
        email 
    WHERE
        (networkID = 'crbark00' 
        AND emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) 
    GROUP BY
        networkID

    SELECT 
        networkid, COUNT(isQuoteComplete) as Total 
    FROM
        email 
    WHERE
        (networkID = 'crherb00' 
        AND emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) 
    GROUP BY
        networkID

    SELECT 
        networkid,
        COUNT(isQuoteComplete) as Total 
    FROM
        email 
    WHERE
        (networkID = 'crcalr25'
        AND emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) 
    GROUP BY
        networkID

   SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'craran00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crcerg25'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crdelj00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crromj00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crarrl00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crverj00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crmore00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crgomf00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crvarm00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crmong00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crarim00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crjimj00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crvilg00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID 
END

这是在执行时:

USE [Quotes]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[LastWeekQuotesByAssociate]

SELECT  'Return Value' = @return_value
GO

它只返回第一个选择!

任何暗示,有人可以帮助我在这里!

由于

3 个答案:

答案 0 :(得分:0)

 SELECT networkid,COUNT(isQuoteComplete) as Total from email 
      where networkID  in ('crbark00','crxxxxx') 
      and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID

答案 1 :(得分:0)

如果你这样做,你需要添加

UNION ALL
每次选择之间

SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crbark00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
UNION ALL
SELECT networkid,COUNT(isQuoteComplete) as Total from email where(networkID = 'crherb00'and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID

更好的解决方案是生成包含networkIds的列表/表格,然后在'中使用'像:

SELECT networkid,COUNT(isQuoteComplete) as Total 
from email 
where 
    networkID in ('crbark00', 'crbark01', 'crbark02') 
    and emailDateEntry > DATEADD(WEEK, -1, GETDATE()) 
group by networkID

也许可以使用subselect而不是列出每个networkId

答案 2 :(得分:0)

每个select语句完成后,请使用UNION ALL命令,例如Example 选择         networkid,COUNT(isQuoteComplete)为Total     从         电子邮件     哪里         (networkID =' crbark00'         AND emailDateEntry> (DATEADD(WEEK,-1,GETDATE())))     通过...分组         网络ID   UNION ALL     选择         networkid,COUNT(isQuoteComplete)为Total     从         电子邮件     哪里         (networkID =' crherb00'         AND emailDateEntry> (DATEADD(WEEK,-1,GETDATE())))     通过...分组         网络ID