首页 新闻 会员 周边 捐助

count的存储过程统计

0
悬赏园豆:15 [已关闭问题] 关闭于 2018-09-28 14:39

ALTER FUNCTION [dbo].CustomerVW
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT *
from CRM_CustomerVW
where CreateDT between @DATE1 and @DATE2
)
表函数的参数DateTime 参数在@DATE1上使用正常,但是使用@DATE2的时候却没有结果
我用‘2018-01-01’ 和‘2018-09-30’直接带进去查找也能返回正常的结果

下面是储存过程 为了统计Customer表的某个字段的条数,字段是一条参数
ALTER PROCEDURE [dbo].[CRM_Customer_Statistics11]
(
@DATE1 DateTime, --起始时间
@DATE2 DateTime, --截止时间
@Owner nvarchar(500), --跟进人
@Datetype nvarchar

(500),--统计字段--
@DatetypeName nvarchar(500)---统计

字段名称--
)
AS
SET NOCOUNT ON

---- 构造语句 ----
DECLARE @SQL VARCHAR(4000)

SET @SQL = N'
    
    SELECT  count('+@Datetype+') as Num,'+@DatetypeName+' 

as Name
FROM (
SELECT *
from CRM_CustomerVW
where CreateDT between '+CONVERT

(varchar(10),@DATE1,120)+' and '+CONVERT(varchar(10),@DATE2,120)+'
) a
'
+
CASE
WHEN @Datetype IS NOT NULL AND LEN(@Datetype)

0 THEN ' group by ' + @DatetypeName
ELSE ''
END

---- 执行语句 ----

EXEC(@SQL)

---- 还原计数器 ----
SET NOCOUNT OFF

RETURN
问题补充:

SELECT count(@Datetype) as Num,@DatetypeName as Name
FROM (
SELECT *
from CRM_CustomerVW
where CreateDT between @DATE1 and @DATE2
) a
group by @DatetypeName
这个存储过程提示:每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
能通过什么方式来实现

大神带带我吧的主页 大神带带我吧 | 初学一级 | 园豆:25
提问于:2018-09-20 16:49
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册