我对此查询有问题
SELECT SUM (A.SumTopMarks) FROM (SELECT
T.section_id,
SumTopMarks = SUM(S.marks)
FROM
dbo.MocktestDetails AS T
CROSS APPLY (
SELECT TOP (T.total_section_question)
*
FROM
dbo.online_test_marks AS O
WHERE
T.section_id = O.section_id AND t.branch_id = o.branch_id AND t.test_id = o.test_id
AND t.test_id=1 AND o.test_id=1 AND o.student_id=1
--AND o.branch_id =@branch_id AND t.branch_id=@branch_id
ORDER BY
O.marks DESC
) AS S
GROUP BY
T.section_id) AS A
我知道为什么显示它,因为T.total_section_question列,它在我的表中被声明为 nvarchar。
假设我想运行此查询,
SELECT TOP 1 * FROM dbo.tblName
它没有显示任何语法错误,但是如果像这样重新运行,
DECLARE @n NVARCHAR(3)= '10'
SELECT TOP (@n) * FROM dbo.adm_BusinessArea
它显示一个错误,如何修复此语法。 我能投这个吗?但是铸造给了我一个语法错误
试试这个:
DECLARE @n int= 10
SELECT TOP (@n) * FROM dbo.adm_BusinessArea
或者在 varchar 数据类型的情况下:
DECLARE @n varchar(10) = '10'
SELECT TOP (cast(@n as int)) * FROM dbo.adm_BusinessArea
以下是说明和示例:
https://learn.microsoft.com/en-us/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15