嘿所以我在工作中遇到了一个问题,我遇到了困难。我试图只加入一个表,只有当某个值等于1.现在我不能在这方面使用大小写,因为它返回标量值。所以我留下了使用动态sql的情况。但是我需要在select语句中执行代码,但是我无法做到这一点,我想知道有人能指出我的方式吗?
因此,假设此代码位于select语句中
ISNULL(c.Name, (EXEC @sql) as courseName,
这就在它之前
SET @isSelectAll = CASE
WHEN EXISTS (SELECT 1 FROM @coursesectionID csec WHERE csec.Id = -1)
THEN 1
ELSE 0
END
SET @sql = CASE WHEN @isSelectAll = 0
THEN
' SELECT TOP 1 c.Name
from SCS_Course c
INNER JOIN SCS_CourseSection cs
on c.CoursePk = cs.CourseFk
where cs.CourseFk =
(Select cs.CourseFk
from SCS_CourseSection cs
INNER JOIN @coursesectionID csec
on cs.CourseFk = csec.id
where cs.CourseSectionPk = csec.id)'
ELSE 'SELECT TOP 1 FROM SCSBoard'
END
这只是代码演示我的问题的一个示例,我收到一条错误消息,说EXEC附近的语法不正确。
我想知道为什么我不允许在这里执行不同的查询,如果有人有这个问题的解决方案?非常感谢