我正在尝试将以下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
答案 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