首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其他解决方案,而不是光标

问其他解决方案,而不是光标
EN

Stack Overflow用户
提问于 2010-05-28 08:17:58
回答 3查看 72关注 0票数 0

我有下面的枢轴表,我设法做了,这是结果,我想说得更远一点。

代码语言:javascript
复制
RID; NTRITCode; NTRIId; Parameter; Usage; Rate**

1; CURRENT; 4; Peak; 100; 0.1
1; CURRENT; 4; NonPeak; 200; 0.2

1; PROPOSED; 6; Peak; 100; 0.2
1; PROPOSED; 6; NonPeak; 200; 0.3

1; PROPOSED; 8; Peak; 200; 0.3
1; PROPOSED; 8; NonPeak; 200; 0.5

正如你所看到的,有2组建议的(ID=6和8)。我想像下面这样显示,这样每一组都有一对电流和建议的电流,如下所示:

代码语言:javascript
复制
**Sequence; RID; NTRITCode; NTRIId; Parameter; Usage; Rate**

1; 1; CURRENT; 4; Peak; 100; 0.1
1; 1; CURRENT; 4; NonPeak; 200; 0.2
1; 1; PROPOSED; 6; Peak; 100; 0.2
1; 1; PROPOSED; 6; NonPeak; 200; 0.3

2; 1; CURRENT; 4; Peak; 100; 0.1
2; 1; CURRENT; 4; NonPeak; 200; 0.2
2; 1; PROPOSED; 8; Peak; 200; 0.3
2; 1; PROPOSED; 8; NonPeak; 200; 0.5 

同样,我所能想到的就是组合使用游标和联合,但是有没有TSQL可以做到这一点呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-28 08:58:11

我不确定您是否真的需要像数字/计数表那样的递归查询来获得“当前”值与“建议”值相同的序列号。

代码语言:javascript
复制
With 
    Numbers As 
    (
    Select Row_Number() Over ( Order By C1.object_id ) As Value
    From sys.columns As C1
        Cross Join sys.columns As C2
    )
    , ProposedSequences As
    (
    Select  NTRIId
        , Row_Number() Over ( Order By NTRIId ) As Sequence
    From Table
    Where NTRITCode = 'PROPOSED'
    Group By NTRIId
    )
    , CurrentSequences As
    (
    Select RID, NTRITCode, NTRIId, Parameter, Usage, Rate
        , Numbers.Value As Sequence
    From Table
        Cross Join Numbers
    Where NTRITCode = 'Current'
        And Numbers.Value <= (Select Max(Sequence) From ProposedSequence)
    )
Select Sequence, RID, NTRITCode, NTRIId, Parameter, Usage, Rate
From CurrentSequences
Union All
Select PS.Sequence, T.RID, T.NTRITCode, T.NTRIId, T.Parameter, T.Usage, T.Rate
From ProposedSequences As PS
    Join Table As T
        On T.NTRIId = PS.NTRIId
Order By PS.Sequence, T.NTRITCode
票数 1
EN

Stack Overflow用户

发布于 2010-05-28 08:49:28

也许mdma在这个问题上发布的内容可能对你有用。我从来没有想过它,但递归CTE是非常有趣的。起始点可以是不同的“建议对”的数量,然后它将与自己结合所需的次数,以创建正确数量的“当前对”。

SQL: how to get all the distinct characters in a column, across all rows

票数 1
EN

Stack Overflow用户

发布于 2010-05-28 17:58:53

代码语言:javascript
复制
select row_number() over(PARTITION by c.NTRITCode,c.parameter order by c.NTRITCode, c.ntriid,c.parameter) nb, 
c.* from table c
join (select * from table where NTRITCode='PROPOSED') p 
on c.rid=p.rid and c.parameter=p.parameter
and not(p.NTRIId=c.NTRIId and c.parameter=p.parameter)
order by nb, c.ntriid, c.parameter desc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2925916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档