2017-04-05 127 views
0

我想將以下Oracle特定查詢轉換爲MS SQL Server特定語法。但我無法做到這兩個表的連接錯誤'關鍵字'LEFT'附近的錯誤語法。請給出以下查詢的MS SQL Sever轉換格式。提前致謝。MS SQL Server相當於oracle查詢

SELECT UNIQUE 
     '' log_id, 
     21043 campaign_Id , 
     tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name email_subject, 
     '' email_user_id_to_list 
FROM DUAL 
LEFT OUTER JOIN tbk_campaign c ON 1=1 AND tbk_campaign.campaign_id =21043 
+0

我們不會做你的工作爲你更換UNIQUE,告訴我們您嘗試 – HoneyBadger

+0

對不起張貼整個查詢。編輯的問題。 – prathyaksh

回答

1

SQL Server不執行DUAL,存在因爲每個SELECT 「必須」 有一個FROM條款一個神話般的表。

您就可以使用一些簡單的更換DUAL

SELECT DISTINCT '' log_id, 21043 campaign_Id , tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name 
    email_subject, '' email_user_id_to_list 
FROM (SELECT 1 as a) t 
    LEFT OUTER JOIN tbk_campaign c ON tbk_campaign.campaign_id =21043 

(也納入UNIQUE /明顯的變化是Sandip mentions


無需實現DUAL的,SQL服務器,而不是放寬了的要求,並允許SELECT s沒有FROM子句,如我的答案中的子查詢所示。但是,我相信這些標準確實要求FROM條款和DUAL的使用。

+0

謝謝@Damien_The_Unbeliever。 – prathyaksh

0

我已更新您的查詢,如下所示,它不會引發任何編譯錯誤。與DISTINCT

SELECT DISTINCT 
    '' log_id, 
    21043 campaign_Id , 
    tbk_campaign.online_campaign_id + ' ' + tbk_campaign.promotion_name email_subject, 
    '' email_user_id_to_list 
FROM DUAL 
LEFT OUTER JOIN tbk_campaign c ON 1=1 AND tbk_campaign.campaign_id =21043 
+0

謝謝@Sandip Patel。 – prathyaksh

+0

'DUAL'在sql server中不存在(除非你自己創建它) – HoneyBadger

+0

@Honey ..:我認爲DUAL是表名,我只在sql中編譯沒有用execute –