SQL中的动态查询以及如何在视图中实现

特里维迪

在此处输入图像描述“我的查询”在一行中动态创建技能列表。但是我不能在视图中使用此查询,因为查询中存在声明变量。如何修改它以在视图中使用它并且仍然是动态的

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(col + '_' + cast(seq as             
   varchar(2)))
    from
    (
        select  seq = row_number() over(partition by Skill.ID_Job
                                    order by Skill.ID_Job) 
      from dbo.Job_Skill Skill
      Where Skill.Min_Job = 1 and Skill.Ideal_Job = 1

   ) hr

    cross apply
    (
      select 'Skill',1 
    ) c (col, val) 
                order by val , seq
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 



 set @query = N'SELECT ID_Job, ' + @cols + N' 
        from 
        (
          select hr.ID_Job, 
          col = c.col + ''_'' + cast(seq as varchar(2)),
          c.val
          from
          (
              select Skill.ID_Job, 
        Skill.ID_SKL_Job,
        Skill.Min_Job,
        Skill.Ideal_Job,
        seq = row_number() over(partition by Skill.ID_Job
                                    order by Skill.ID_Job) 
      from dbo.Job_Skill Skill
      Where Skill.Min_Job = 1 and Skill.Ideal_Job = 1
          ) hr

          cross apply
          (
             select ''Skill'', ID_SKL_Job
          ) c (col, val)
        ) x
        pivot 
       (
            max(val)
            for col in (' + @cols + N')
        ) p 
        order by ID_Job'

exec sp_executesql @query           

在此处输入图片说明

比斯塔比尔

不确定您要做什么,但是SQL不支持动态视图。

也许在您的过程中使用FOR XML并通过输出参数返回结果XML是可行的。

然后,您可以加入XML并使用XQuery对其进行查询。如果返回的XML类似于:

DECLARE @xml xml = CONVERT(xml, 
'<jobs>
 <job id="1">
    <skill>s1</skill>
    <skill>s2</skill>
 </job>
 <job id="2">
    <skill>s3</skill>
</job>
</jobs>')

You could query for certain skills like:

SELECT 
    j.*
 ,  T.jobs.query('skill') AS skill
FROM @xml.nodes('jobs/job') T(jobs)
INNER JOIN jobs j ON j.id = t.jobs.value('@id','int')
WHERE T.jobs.exist('skill[.="s1"]') = 1

从我所知道的ps来看,使用XML可以让您抓起动态sql,因为您可以从一开始就按job_id对技能进行分组,将一列作为job_id,将第二列作为生成的XML,然后在视图或内联函数中实现它,然后您可以通过ID加入并查询XML,而无需进行任何编程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL中的动态查询以及如何在视图中实现

来自分类Dev

如何在SQL查询视图中使用条件

来自分类Dev

如何在SQL查询中实现序列

来自分类Dev

如何在列表视图中实现拖放?

来自分类Dev

如何在Django视图中链接查询

来自分类Dev

如何在滚动视图中动态添加组图像视图

来自分类Dev

如何在PostgreSQL中实现动态SQL功能?

来自分类Dev

如何根据用户查询数据在视图中设置动态“位置”?

来自分类Dev

如何在Ruby on Rails中实现复杂的SQL查询?

来自分类Dev

如何在es中实现以下sql查询?

来自分类Dev

如何在vsc扩展中的视图中动态更改子级

来自分类Dev

如何在JavaFX中动态更改列表视图中项目的背景

来自分类Dev

如何在Cassandra实现视图中删除行?

来自分类Dev

如何在Razor视图中实现<i>标记类的变量

来自分类Dev

如何在代码的网格视图中实现分页

来自分类Dev

如何在动态SQL查询中设置表名?

来自分类Dev

如何在SQL Server中修改动态查询?

来自分类Dev

如何在Java中动态修改SQL查询?

来自分类Dev

如何在动态SQL查询中添加连字符

来自分类Dev

如何在流查询中执行动态SQL?

来自分类Dev

如何在SQL查询中传递动态值

来自分类Dev

如何在SQL动态查询中传递日期时间?

来自分类Dev

如何在基于函数的视图中按类别查询 django 中的帖子

来自分类Dev

如何在angularjs视图中创建动态变量

来自分类Dev

如何在SwiftUI视图中动态处理FetchRequest数据

来自分类Dev

如何在图像视图中动态更改图像?

来自分类Dev

如何在表视图中创建动态单元格?

来自分类Dev

如何在angularjs视图中创建动态变量

来自分类Dev

如何在动态生成的视图中更新模型?

Related 相关文章

热门标签

归档