MS SQL Server相当于oracle查询

时间:2017-04-05 06:38:30

标签: sql sql-server oracle

我正在尝试将以下Oracle特定查询转换为MS SQL Server特定语法。但我无法连接两个表获取错误'关键字'LEFT'附近的语法不正确。请给出以下查询的MS SQL Sever转换格式。提前谢谢。

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

2 个答案:

答案 0 :(得分:1)

SQL Server没有实现DUAL,这是一个神秘的表格,因为每个SELECT"必须"有一个FROM子句 1

您可以使用以下简单的内容替换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 / DISTINCT更改Sandip mentions

1 而不是实现DUAL,SQL Server反而放宽了要求并允许SELECT没有FROM子句,如我的答案中的子查询所示。但是,我认为标准确实要求FROM条款和DUAL的使用。

答案 1 :(得分:0)

我已按照以下更新您的查询,并且不会抛出任何编译错误。将UNIQUE替换为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