sql - 我不能在 SQL 查询中使用变量 Msg 137 必须声明标量变量
问题描述
我想创建一个查询来计算一些变量定义的时间范围内的一些指标,但我不确定是否可以按照我的意图使用这些变量。
我收到以下错误:
Msg 137, Level 15, State 2, Line 7
必须声明标量变量“@vDiai”。
该列TPO_CFecha
的类型为int
。
我不知道我做错了什么:
DECLARE @vDiai INT;
DECLARE @vDiaf INT;
SET @vDiai = 20171030;
SET @vDiaf = 20181030;
USE DBDMS
GO
SELECT
CAST(100 * Baja / (HeadcountBruto / Dias) AS decimal(20, 5))
FROM
(SELECT
SUM(ROT_IBAJA) AS Baja,
COUNT(DISTINCT R.TPO_KFecha) AS Dias,
SUM(ROT_IHCOUNT) AS HeadcountBruto
FROM
TH_Rotacion R
INNER JOIN
TD_Tiempo T ON R.TPO_KFECHA=T.TPO_KFecha
WHERE
T.TPO_CFecha >= @vDiai
AND T.TPO_CFecha <= @vDiaf) T
go
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'TD_Tiempo' AND
COLUMN_NAME = 'TPO_CFecha'
go
解决方案
GO
打破了你的剧本。只需移动或删除它:
USE DBDMS
GO
DECLARE @vDiai INT;
DECLARE @vDiaf INT;
SET @vDiai = 20171030;
SET @vDiaf = 20181030;
SELECT CAST(100*Baja/(HeadcountBruto/Dias) AS decimal(20,5))
FROM (SELECT SUM(ROT_IBAJA) AS Baja,
COUNT(DISTINCT R.TPO_KFecha) AS Dias,
SUM(ROT_IHCOUNT) AS HeadcountBruto
FROM TH_Rotacion R INNER JOIN
TD_Tiempo T
ON R.TPO_KFECHA = T.TPO_KFecha
WHERE T.TPO_CFecha >= @vDiai AND T.TPO_CFecha <= @vDiaf
) T;
推荐阅读
- express - 带有反应电子 js 前端的后端 Express API
- flutter - 巨大的 firebase admob stacktrace 列表 - 与 FirebaseAdMobPlugin 相关?
- django - 有没有办法从模型实例 dict 对象中的连接表中获取列?
- flutter - 如何在状态更改后强制小部件重新创建自己?
- python - scrpy.spyder 上的 start_request 似乎无法正常工作
- ubuntu - 如何防止使用 Nginx 的乘客停止
- java - DateTimeParseException:无法解析文本“2020-04-01T08:53:47.000+02:00 00:00”,在索引 29 处找到未解析的文本
- xml - 使用 powershell 编辑 XML ID 值
- java - 如何在 Spring Data JPA 中为 BigDecimal 定义 BigDecimal 舍入策略?
- daterangepicker - Daterangepicker 日期错误