我想计算日期差异并计算百分比。使用下面给出的查询显示一个错误。错误是:Must declare the scalar variable "@start".
查询:
SELECT
((30 * 100.0) / (DATEDIFF(day, @start, @end)) * 250)
AS Percentage1,
((50 * 100.0) / (DATEDIFF(day,@start, @end)) * 250)
AS Percentage2
答案 0 :(得分:4)
您可以在以下内容中声明变量:
使用默认值:
DECLARE @start DATE = '2014-01-02', -- pass default values
@end DATE = '2015-01-04' --
SELECT
((30 * 100.0) / (DATEDIFF(day, @start, @end)) * 250)
AS Percentage1,
((50 * 100.0) / (DATEDIFF(day,@start, @end)) * 250)
AS Percentage2
使用SET
设置先前使用的创建的指定局部变量 将@local_variable语句声明为指定值。
DECLARE @start DATE,
@end DATE
SET @start = '2014-01-02' -- pass any values
SET @end = '2015-01-04' --
SELECT
((30 * 100.0) / (DATEDIFF(day, @start, @end)) * 250)
AS Percentage1,
((50 * 100.0) / (DATEDIFF(day,@start, @end)) * 250)
AS Percentage2
两种方式都返回以下结果:
Percentage1 Percentage2
2043.596730245000 3405.994550408500
答案 1 :(得分:1)
@start和@end是您在查询中使用的变量,应使用相应的数据类型进行声明。这里您的数据类型似乎是DATE
Declare @start DATE
Declare @end DATE
并使用SET
为其指定一些值例如
SET @start=(select getdate())
SET @end=(select getdate())
然后你可以在查询中使用它们,并且应该将它们声明为某个变量。
注意:如果您在查询中使用任何变量,则应将总查询分配给一个变量并执行它因为在运行时查询将因未找到变量而引发错误
Declare @sql nvarchar(max)
set @sql='select '+ @start+ ', '+ @end
然后Exec(@sql)