2017-05-03 70 views
0

我有一個單列[網絡訂單]值FN75657,FN83747,FN83673等excel工作表。我必須用列[訂單號],[數量],[文檔類型] [日期]查詢這些訂單號與SQL表稱爲[互聯網訂單]。當我查詢SQL中的單個訂單號與cluase [訂單號] = 'FN75657'我得到的結果是用[訂單號] FN75657 [文件類型]'訂單'設置的,如果它已退還,它將作爲[訂單號] FN75657-RF-1和[文件類型] 。我不想一個一個做,因爲它需要很長時間。Excel到SQL獲取報告

SELECT 

    [Internet Order Reference] 
    ,[Amount] 
    ,[Return Reason Code] 
    ,[Shipping Amount] 
    ,[Payment Fee Amount Incl_ Tax] 
    ,[Document Type] 
    ,[DateTime Created] 
    ,[Country] 
    ,[Email] 
    FROM [vets$ internet Orders] 
    where[Country]='united kingdom'and 
    [Original Order No_]='FN24680101' 

this is if i do one by one

所以我創建臨時表並插入Excel列,做加盟,但porblem是我無法獲得退款的結果,因爲它僅與訂單號碼匹配,但沒有得到退款結果。有沒有辦法在SQL中完成它,或者我們必須使用SSIS。提前致謝。

來自評論的SQL顯示臨時表和基表的連接。

SELECT [Internet Order Reference] 
     ,[Ship-to Name] 
     ,[Amount] 
     ,[Return Reason Code] 
     ,[Shipping Amount] 
     ,[Document Type] 
     ,[DateTime Created] 
FROM [TBW_BI].[dbo].[vets$Internet Orders] as h 
INNER JOIN #temp10b as t 
    on h.[Internet Order Reference] = t.[internet_Order_Reference] 
+0

加入需要是像和通配符來處理的回報。 – xQbert

+0

選擇 [網上訂單參考] ,[收貨人名稱] ,[金額] \t,[退貨原因代碼] \t,[運費金額] \t,[文件類型] ,[日期時間創建] 從 [TBW_BI] [DBO]。[獸醫$網上訂單]爲h 內加入#temp10b作爲H T 。[網絡訂單參考] = T [internet_Order_Reference] COLLATE DATABASE_DEFAULT – jiroe

+0

@xQbert請你幫忙我應該在哪裏使用密鑰加入和通配符。以上是我的temp和SQL表的連接。 – jiroe

回答

0

我覺得這是你追求的...

SELECT [Internet Order Reference] 
     ,[Ship-to Name] 
     ,[Amount] 
     ,[Return Reason Code] 
     ,[Shipping Amount] 
     ,[Document Type] 
     ,[DateTime Created] 
FROM [TBW_BI].[dbo].[vets$Internet Orders] as h 
INNER JOIN #temp10b as t 
    on h.[Internet Order Reference] like concat(t.[internet_Order_Reference],'*') 

它在本質上說,加入時 基表的[互聯網秩序參考]就像是從Excel

實施例:

'FN75657-RF-1' 喜歡 'FN75657 *'

所以FN75657的所有組合都會加入,包括退貨。我們可能會更加明確,使用或... ...等

on ((h.[Internet Order Reference] = t.[internet_Order_Reference]) 
    OR (h.[Internet Order Reference] like concat(t.[internet_Order_Reference],'-RF-%')) 

,這樣只出現精確匹配和那些然後包含-RF-%爲後綴的訂單。

on ((h.[Internet Order Reference] = t.[internet_Order_Reference]) 
    OR (h.[Internet Order Reference] like t.[internet_Order_Reference]+'-RF-%')) 
的加入使用`[原始訂單NO_]就像CONCAT(「exceldate.ordernumber」,「%」)'問題的關鍵是
+0

它給出的錯誤:'concat'不是一個公認的內置函數名稱。 – jiroe

+0

奇數concat是一個SQL服務器函數... https://docs.microsoft.com/en-us/sql/t-sql/functions/concat-transact-sql你可以改變'concat(t。[internet_Order_Reference] ,' - RF - *')'to't。[internet_Order_Reference]&'-RF - *'' – xQbert

+0

我已經替換並用+替換,因爲它給出了錯誤。它被執行但看不到除標題以外的任何行。 – jiroe