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 表达式必须至少包含一个不是外部引用的列。
能通过什么方式来实现