Объявление таблицы, вставка в таблицу, выбор различных - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть табличная функция, в которой есть несколько таблиц, которые объявляются и, наконец, объединяются для создания окончательной таблицы с данными из каждой таблицы. У меня была проблема с дубликатами, поэтому я создал новую таблицу @ORDERHEADER, поэтому выберите отдельные значения, а затем вставьте их в таблицу и, в конечном итоге, в финальную таблицу. Когда я запускаю выделение отдельно, оно заполняется правильно, но когда я запускаю его со вставкой, ничего не заполняется.

Ниже приведен код, с которым я сейчас работаю (я оставил закомментированные строки, чтобы вы увидели, что я пробовал - над первым "--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

1 Ответ

0 голосов
/ 22 апреля 2019

Проверь это ... Вы можете написать запрос так:

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 в сеансе и работать с временной таблицей удобнее, чем с переменной таблицей.

В конце запроса нужно:

 Drop table #t

На самом деле вам не нужен дроп-стол, это академический совет. 101

...