循环存储过程中的某些选定值

时间:2010-06-03 21:24:46

标签: sql sql-server stored-procedures

我正在尝试修改连接到ORM工具的存储过程。我想根据列中某些不同值的循环添加更多行。这是当前的SP:

SELECT
    GRP = STAT_CD,
    CODE = REASN_CD
FROM dbo.STATUS_TABLE WITH (NOLOCK)
Order by STAT_CD, SRT_ORDR

对于每个不同的STAT_CD,我还想在SP中插入REASN_CD“ - ”。但是我想在订单之前这样做,所以我可以给他们负排序顺序,所以他们进入列表的顶部。

我正在惹恼如何实现这一点。有没有人知道如何为每个独特的STAT_CD做这个?

2 个答案:

答案 0 :(得分:1)

你走了:

SELECT GRP, CODE, SRT_ORDR FROM 
(
SELECT
    GRP = STAT_CD,
    CODE = REASN_CD,
    SRT_ORDR
FROM dbo.STATUS_TABLE WITH (NOLOCK)
UNION 
SELECT DISTINCT STAT_CD, '--', -1
FROM dbo.STATUS_TABLE WITH (NOLOCK)
) RAW
ORDER BY GRP, SRT_ORDR

请注意,您不能将第一列“Group”别名,因为这是一个保留字。

答案 1 :(得分:0)

虽然我无法测试,但应该这样做

select group=stat_cd,
       code=reasn_cd
       from
(SELECT
     2 as sortcol,
     STAT_CD,
     REASN_CD,
    SRT_ORDER
FROM dbo.STATUS_TABLE WITH (NOLOCK)
union all
select 
1 as sortcol,
stat_cd ,'-',null
from dbo.status_table with(nolock)
group by stat_cd) as a
Order by STAT_CD,sortcol, SRT_ORDER