Sql 用有序结果填充表变量

Sql 用有序结果填充表变量,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想用CADEPAtable的结果填充table变量。唯一的问题是这些结果必须有序 我收到的错误是: ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML 查询是: DECLARE @DEPARTMENTS_TBL TABLE ( DEPA_KEY INT ) INSERT INTO @DEPARTMENTS_TBL(DEPA_KEY) SELECT DEPA_KEY FROM (

我想用
CADEPA
table的结果填充table变量。唯一的问题是这些结果必须有序

我收到的错误是:

ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML

查询是:

DECLARE @DEPARTMENTS_TBL TABLE
(
    DEPA_KEY INT                
)

INSERT INTO @DEPARTMENTS_TBL(DEPA_KEY)
SELECT DEPA_KEY
FROM (
    SELECT DISTINCT DEPA_KEY
    FROM CADEPA
    WHERE DEPA_STA = '1'
    ORDER BY DEPA_NME
) P
表格表示无序的集合。要执行所需操作,您需要一个键来表示顺序:

DECLARE @DEPARTMENTS_TBL TABLE (
     ID IDENTITY(1, 1) PRIMARY KEY
     DEPA_KEY INT                
);

INSERT INTO @DEPARTMENTS_TBL (DEPA_KEY)
    SELECT DEPA_KEY
    FROM CADEPA
    WHERE DEPA_STA = '1'
    GROUP BY DEPA_KEY
    ORDER BY MAX(DEPA_NME);
我还认为您应该在表中包括
DEPA\NME
,但是
id
列将保留顺序

请确保使用
订单查询人

select d.*
from DEPARTMENTS_TBL d
order by id;
表格表示无序的集合。要执行所需操作,您需要一个键来表示顺序:

DECLARE @DEPARTMENTS_TBL TABLE (
     ID IDENTITY(1, 1) PRIMARY KEY
     DEPA_KEY INT                
);

INSERT INTO @DEPARTMENTS_TBL (DEPA_KEY)
    SELECT DEPA_KEY
    FROM CADEPA
    WHERE DEPA_STA = '1'
    GROUP BY DEPA_KEY
    ORDER BY MAX(DEPA_NME);
我还认为您应该在表中包括
DEPA\NME
,但是
id
列将保留顺序

请确保使用
订单查询人

select d.*
from DEPARTMENTS_TBL d
order by id;

在输入表别名(p)后,在末尾移动ORDERBY子句


在输入表别名(p)后,在末尾移动ORDERBY子句


在您的表别名(P)@Kostis之后,请在结尾处按子句移动订单-您能将此作为答案吗?在您的表别名(P)@Kostis之后,请在结尾处按子句移动订单-您能将此作为答案吗?外部订单(P)解决了我的问题。如果你能寄这个,请。我已经在@DEPARTMENTS\u TBL中添加了DEPA\u NME列。我已经更新了我的答案……您是否还需要在@DEPARTMENTS\u TBL中插入DEPA\u NME值?是的,我也这样做了。外部订单(P)解决了我的问题。如果你能寄这个,请。我已经在@DEPARTMENTS\u TBL中添加了DEPA\u NME列。我已经更新了我的答案……您还需要在@DEPARTMENTS\u TBL中插入DEPA\u NME值吗?是的,我也这样做了。