2017-04-05 118 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 –