首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server存储过程仅返回一个值

Server存储过程仅返回一个值
EN

Stack Overflow用户
提问于 2016-12-09 20:38:12
回答 3查看 134关注 0票数 0

当返回一个存储过程时,我有一些问题,我需要所有的选择来创建一个图表。

这是我的程序:

代码语言:javascript
复制
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

这是在执行时:

代码语言:javascript
复制
USE [Quotes]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[LastWeekQuotesByAssociate]

SELECT  'Return Value' = @return_value
GO

它只返回优先选择!

任何暗示,都有人能帮我!

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-09 20:43:47

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

代码语言:javascript
复制
UNION ALL

在每一个选择之间。

代码语言:javascript
复制
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的列表/表,然后使用'in‘类:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2016-12-09 20:40:56

代码语言:javascript
复制
 SELECT networkid,COUNT(isQuoteComplete) as Total from email 
      where networkID  in ('crbark00','crxxxxx') 
      and emailDateEntry > (DATEADD(WEEK, -1, GETDATE()))) group by networkID
票数 0
EN

Stack Overflow用户

发布于 2016-12-12 02:55:15

当每个SELECT语句完成后,请使用UNION ALL命令,例如选择networkid,计数(IsQuoteComplete)作为来自电子邮件的总计(networkID = 'crbark00‘和emailDateEntry >),networkID UNION组(WEEK,-1,GETDATE())-所有选择网络,计数(IsQuoteComplete)从电子邮件中选择networkID= 'crherb00’和emailDateEntry > (networkID =‘crherb00’和emailDateEntry>)-1,GETDATE(())组,由networkID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41068506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档