【发布时间】:2019-09-11 21:05:32
【问题描述】:
我有一个表值函数,其中声明了多个表,最后将它们连接在一起以使用每个表中的数据创建最终表。我遇到了重复问题,因此我创建了一个新表@ORDERHEADER,因此选择不同的值,然后将其插入到表中,最终插入到最终表中。当我单独运行 select distinct 时,它会正确填充,但是当我使用 insert 运行它时,不会填充任何内容。
下面是我目前正在使用的代码(我保留了注释掉的行,以便您查看我尝试过的内容——在第一个“--LEFT OUTER JOIN”上方是我的工作代码)。
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
【问题讨论】:
-
旁白:看起来像你
selectOrd_Nr、Div_Cd、EDP_Id 和 Offer_Cd,但表中的列是 Div_Cd、Ord_Nr、EDP_Id 和 Offer_Cd。前两列似乎交换了。
标签: sql-server tsql duplicates sql-insert