SQL Server:如何在动态选择中插入变量

麦克风

我有一个要使其动态化的存储过程,以便它可以处理各种输入。除了以下内容外,我已经弄清了大多数动态过程。

有人可以告诉我如何编写此部分才能在动态过程中使用它吗?我是否只需要在每个变量'+之前和+'之后

INSERT INTO @temp
(
            dateRange
)
SELECT      @date0
UNION ALL
SELECT      @date1
UNION ALL
SELECT      @date2
UNION ALL
SELECT      @date3
UNION ALL
SELECT      @date4
UNION ALL
SELECT      @date5

编辑:整个查询为供参考。在进行此动态调整之前,它一直在正确运行,因此我的猜测是我在此处缺少一些或不需要的引号或任何其他书写错误。另外,我不确定最后一个嵌套查询中的Where条件是否正确编写为动态。

ALTER PROCEDURE [dbo].[FetchHistoryCombined]
    @selection nvarchar(100),
    @date0 nvarchar(20),
    @date1 nvarchar(20),
    @date2 nvarchar(20),
    @date3 nvarchar(20),
    @date4 nvarchar(20),
    @date5 nvarchar(20)
AS
BEGIN   
    SET NOCOUNT ON;

    BEGIN

    DECLARE @sql nvarchar(max)

    SET @sql = N' DECLARE @temp AS TABLE
    (
                dateRange nvarchar(20)
    )
    DECLARE @temp2 AS TABLE
    (
                ranking int,
                item nvarchar(100),
                volume int
    )

    INSERT INTO @temp
    (
                dateRange
    )
    SELECT      ' + @date0 + '
    UNION ALL
    SELECT      ' + @date1 + '
    UNION ALL
    SELECT      ' + @date2 + '
    UNION ALL
    SELECT      ' + @date3 + '
    UNION ALL
    SELECT      ' + @date4 + '
    UNION ALL
    SELECT      ' + @date5 + '

    INSERT INTO @temp2
    (       
                ranking,
                item,
                volume
    )
    SELECT      Top 10 RANK() OVER(ORDER BY COUNT(*) desc, ' + @selection + ') [Rank],
                ' + @selection + ', 
                COUNT(*) AS volume
    FROM        LogEsc 
    WHERE       dateEsc LIKE ''' + @date0 + '%''
    AND         EID LIKE ''PE%''
    GROUP BY    ' + @selection + '
    ORDER BY    volume desc, ' + @selection + '

    SELECT      
                (
                        SELECT      A.item
                        FROM        @temp2 A
                        ORDER BY    A.ranking, A.item
                        FOR XML PATH(''''), ELEMENTS, TYPE
                ) AS top10,
                (       
                        SELECT      B.dateRange,
                                    (
                                            SELECT      C.item,
                                                        (
                                                                SELECT      COUNT(*) AS volume
                                                                FROM        LogEsc D
                                                                WHERE       D.' + @selection + ' = C.item
                                                                AND         D.EID LIKE ''PE%''
                                                                AND         D.dateEsc LIKE B.dateRange + ''%''
                                                                FOR XML PATH(''''), ELEMENTS, TYPE
                                                        )
                                            FROM        @temp2 C
                                            ORDER BY    C.ranking, C.item
                                            FOR XML PATH(''''), ELEMENTS, TYPE
                                    ) AS [dateRange/items]
                        FROM    @temp B
                        FOR XML PATH(''''), ELEMENTS, TYPE
                ) AS history
    FOR XML PATH(''ranking''), ELEMENTS, TYPE, ROOT(''ranks'')'

    EXEC(@sql)

    END
END

谢谢你,迈克。

戈登·利诺夫(Gordon Linoff)

基本上,您需要在日期常数周围加上单引号。这是一个开始:

INSERT INTO @temp(dateRange)
SELECT      ''' + @date0 + '''
UNION ALL
SELECT      ''' + @date1 + '''
UNION ALL
. . .

SQL足够聪明,能够读取在同一系统上写入的日期。请注意,如果要更改系统或将其写到文件中,则需要明确日期格式(convert()用于将其以某种规范格式放置)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在插入触发器SQL Server中的变量中使用插入表?

来自分类Dev

如何使用python脚本在SQL Server数据库中动态插入变量的值

来自分类Dev

如何在字符串中插入动态SQL oracle变量?

来自分类Dev

如何在SQL Server中基于xml在各个表中动态插入数据

来自分类Dev

如何使用SQL Server在变量中创建带有选择查询的插入

来自分类Dev

如何在SQL Server 2012中使用最少的操作“插入或选择”?

来自分类Dev

如何避免在SQL Server中重复插入动态值

来自分类Dev

如何在SQL Server中动态创建十进制变量

来自分类Dev

VBA如何在SQL批量语法中插入动态参数

来自分类Dev

如何使动态SQL插入“日期”变量?

来自分类Dev

如何在Visual Studio中的动态SQL中为SQL Server项目使用数据库变量名?

来自分类Dev

如何在变量PL / SQL中插入多行

来自分类Dev

如何在ASP.NET C#中将动态创建的标签文本插入到SQL Server中

来自分类Dev

如何在Postgresql动态SQL中引用变量?

来自分类Dev

如何在SQL Server表中插入多个值?

来自分类Dev

如何在Sql Server 2008中插入日期?

来自分类Dev

如何在 SQL Server 中插入填充了 parentCode 的表

来自分类Dev

选择插入中的SQL Server子查询

来自分类Dev

如何在Sql Server中的列中对选择进行分组

来自分类Dev

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

来自分类Dev

如何在SQL Server 2008中动态使用SOUNDEX

来自分类Dev

如何在 SQL Server 中动态创建计算列?

来自分类Dev

如何在SQL Server中为触发器设置两个动态临时全局变量?

来自分类Dev

在SQL Server中动态选择TOP行

来自分类Dev

如何在我选择的SQL Server中添加“%”

来自分类Dev

如何在SQL Server中基于某些数量选择头寸

来自分类Dev

如何在变量中存储固定行值-SQL Server

来自分类Dev

如何在 SQL Server 变量中存储多个值

来自分类Dev

如何在SQL Server中选择第一个插入的行?

Related 相关文章

  1. 1

    如何在插入触发器SQL Server中的变量中使用插入表?

  2. 2

    如何使用python脚本在SQL Server数据库中动态插入变量的值

  3. 3

    如何在字符串中插入动态SQL oracle变量?

  4. 4

    如何在SQL Server中基于xml在各个表中动态插入数据

  5. 5

    如何使用SQL Server在变量中创建带有选择查询的插入

  6. 6

    如何在SQL Server 2012中使用最少的操作“插入或选择”?

  7. 7

    如何避免在SQL Server中重复插入动态值

  8. 8

    如何在SQL Server中动态创建十进制变量

  9. 9

    VBA如何在SQL批量语法中插入动态参数

  10. 10

    如何使动态SQL插入“日期”变量?

  11. 11

    如何在Visual Studio中的动态SQL中为SQL Server项目使用数据库变量名?

  12. 12

    如何在变量PL / SQL中插入多行

  13. 13

    如何在ASP.NET C#中将动态创建的标签文本插入到SQL Server中

  14. 14

    如何在Postgresql动态SQL中引用变量?

  15. 15

    如何在SQL Server表中插入多个值?

  16. 16

    如何在Sql Server 2008中插入日期?

  17. 17

    如何在 SQL Server 中插入填充了 parentCode 的表

  18. 18

    选择插入中的SQL Server子查询

  19. 19

    如何在Sql Server中的列中对选择进行分组

  20. 20

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

  21. 21

    如何在SQL Server 2008中动态使用SOUNDEX

  22. 22

    如何在 SQL Server 中动态创建计算列?

  23. 23

    如何在SQL Server中为触发器设置两个动态临时全局变量?

  24. 24

    在SQL Server中动态选择TOP行

  25. 25

    如何在我选择的SQL Server中添加“%”

  26. 26

    如何在SQL Server中基于某些数量选择头寸

  27. 27

    如何在变量中存储固定行值-SQL Server

  28. 28

    如何在 SQL Server 变量中存储多个值

  29. 29

    如何在SQL Server中选择第一个插入的行?

热门标签

归档