【问题标题】:MS SQL Server equivalent of oracle queryMS SQL Server 相当于 oracle 查询
【发布时间】:2017-04-05 14:52:42
【问题描述】:

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

【问题讨论】:

  • 我们不会为你做你的工作,向我们展示你的尝试
  • 抱歉发布整个查询。问题已编辑。

标签: sql sql-server oracle


【解决方案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

(还合并了 Sandip mentions 的 UNIQUE/DISTINCT 更改)


1SQL Server 没有实现DUAL,而是放宽了要求并允许SELECTs 没有FROM 子句,如我回答中的子查询所示。但是,我相信标准确实规定了FROM 子句和DUAL 的使用。

【讨论】:

  • 感谢@Damien_The_Unbeliever。
【解决方案2】:

我已将您的查询更新如下,它不会引发任何编译错误。将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

【讨论】:

  • 感谢@Sandip Patel。
  • DUAL 在 sql server 中不存在(除非你自己创建)
  • @Honey.. :我认为 DUAL 是表名,我只在 sql 中编译,没有尝试执行
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2010-11-30
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多