首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Declare table、insert table、select distinct

Declare table、insert table、select distinct
EN

Stack Overflow用户
提问于 2019-04-23 01:22:29
回答 1查看 166关注 0票数 0

我有一个表值函数,其中声明了多个表,最后连接在一起,用每个表中的数据创建最终的表。我有一个重复的问题,所以我创建了一个新的表@ORDERHEADER,所以选择不同的值,然后将它插入到表中,并最终插入到最终的表中。当我自己运行select distinct时,它可以正确填充,但当我使用insert运行它时,没有填充任何内容。

下面是我目前正在使用的代码(我保留了注释掉的行,让您看看我尝试了什么--在第一个"--LEFT OUTER JOIN“之上是我的工作代码)。

代码语言:javascript
复制
DECLARE @ORDERHEADER TABLE(
    [DIV_CD] [varchar](8) NULL,
    [SALES_ORD_NR] [varchar](8) NOT NULL,
    [CUST_EDP_ID] [decimal](28,0) NOT NULL,
    [OFFER_CD] [varchar] (8) NULL)

    INSERT INTO @ORDERHEADER
    SELECT DISTINCT(SV_OR_1000_ORDER_HEADER.SALES_ORD_NR), 
SV_OR_1000_ORDER_HEADER.DIV_CD, SV_OR_1000_ORDER_HEADER.CUST_EDP_ID, 
SV_OR_1000_ORDER_HEADER.OFFER_CD
    from SV_OR_1000_ORDER_HEADER
    --join @RETURNS r on SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = 
--r.SALES_ORD_NR
                --LEFT OUTER JOIN 
--OPENQUERY(CH1KNOWAPP,'SELECT DISTINCT SALES_ORD_NR FROM 
--EmailVPN..EB_RETURN_CONFIRMATION_NEW WITH(NOLOCK) WHERE 
--ORD_ITM_STA_LGCY_CD IN (''R'',''E'',''4'')') as RET_EMAILS on 
--RET_EMAILS.SALES_ORD_NR COLLATE SQL_Latin1_General_CP1_CI_AS = 
--SV_OR_1000_ORDER_HEADER.SALES_ORD_NR
    --join @RETURNS r on SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = 
--r.SALES_ORD_NR
     --join SV_MACORD_RETURNS on 
--SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = SV_MACORD_RETURNS.SALES_ORD_NR
    -- where exists (SELECT DISTINCT * from 
--SV_OR_1000_ORDER_HEADER)-- exists (select * from SV_OR_1000_ORDER_HEADER 
--join SV_MACORD_RETURNS on SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = 
--SV_MACORD_RETURNS.SALES_ORD_NR) 
    --where SV_OR_1000_ORDER_HEADER.SALES_ORD_NR is not null
    --where  SV_OR_1000_ORDER_HEADER.OFFER_CD not in ('36')

    where SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = 'W3151536'
    --group by SV_MACORD_RETURNS.SALES_ORD_NR,  SV_MACORD_RETURNS.DIVISION, --SV_OR_1000_ORDER_HEADER.CUST_EDP_ID, SV_MACORD_RETURNS.OFFER_CD
    --having COUNT(SV_OR_1000_ORDER_HEADER.SRC_SYS_TRANS_DT) < 2
EN

回答 1

Stack Overflow用户

发布于 2019-04-23 01:33:39

这样测试..。您可以像这样编写查询:

代码语言:javascript
复制
SELECT DISTINCT (SV_OR_1000_ORDER_HEADER.SALES_ORD_NR), SV_OR_1000_ORDER_HEADER.DIV_CD, SV_OR_1000_ORDER_HEADER.CUST_EDP_ID, SV_OR_1000_ORDER_HEADER.OFFER_CD
Into #t
from SV_OR_1000_ORDER_HEADER
where SV_OR_1000_ORDER_HEADER.SALES_ORD_NR = 'W3151536'

然后被其他桌子完美地连接在一起。

你可以在一个会话中使用#table,用临时表工作要比用变量表好。

查询的结尾需要:

代码语言:javascript
复制
 Drop table #t

实际上,你不需要drop table,这是学术建议。?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55798338

复制
相关文章

相似问题

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