加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在SQL Server存储进程中按索引而不是名称会见表的列

发布时间:2021-02-24 23:13:26 所属栏目:编程 来源:网络整理
导读:有没有步伐在SQL Server的存储进程中通过索引会见列? 目标是计较大量列.我正在阅读游标,但我不知道怎样应用它们. 让我表明一下我的题目: 我有一排像: field_1 field_2 field_3 field_4 ...field_d Sfield_1 Sfield_2 Sfield_3...Sfield_n1 2 3 4 d 10 20 3

有没有步伐在SQL Server的存储进程中通过索引会见列?

目标是计较大量列.我正在阅读游标,但我不知道怎样应用它们.

让我表明一下我的题目:

我有一排像:

field_1 field_2 field_3 field_4 ...field_d  Sfield_1 Sfield_2 Sfield_3...Sfield_n
1       2       3       4          d        10       20       30         n

我必要计较像(field_1 * field1) – (Sfield_1 * Sfiled_1)/更多…

因此功效存储在表格列中d次.

以是功效是一个d列* d行表.

因为列数是可变的,我正在思量建造动态SQL,在字符串中获取列的名称并拆分我必要的列,但这种要领使题目更难.我以为按索引获取列数可以使糊口更轻松.

办理要领

起首,如 OMG Ponies所述,您不能按其序号位置引用列.这不是不测. SQL类型不是为DDL或DML中的动态模式构建的.

鉴于此,我不得不想知道为什么你的数据布局如你所知.当您实行提守信息时,架构和题目域之间不匹配的迹象会自行表现.当查询的编写很是繁琐时,表白模式没有正确地为其计划的域建模.

可是,尽量云云,按照你汇报我们的环境,另一种办理方案如下:(我假设field_1 * field1意味着field_1 * field_1或field_1平方或Power(field_1,2) ))

Select 1 As Sequence,field_1 As [Field],Sfield_1 As [SField],Sfiled_1 As [SFiled]
Union All Select 2,field_2,Sfield_2,Sfiled_2
...
Union All Select n,field_n,Sfield_n,Sfiled_n

此刻您的查询如下:

With Inputs As
    (
    Select 1 As Sequence,Sfiled_1 As [SFiled]
    Union All Select 2,Sfiled_2
    ....
    ),Results As
    (
    Select Case
            When Sequence = 1 Then Power( [Field],2 ) - ( [SField] * [SFiled] ) 
            Else 1 / Power( [Field],2 ) - ( [SField] * [SFiled] ) 
            End
            As Result
    From Inputs
    )
Select Exp( Sum( Log( Result ) ) )
From Results

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读