【问题标题】:Creating a Query for SQL Server (using SQL Developer)为 SQL Server 创建查询(使用 SQL Developer)
【发布时间】:2013-06-21 00:14:20
【问题描述】:

这两个查询在分开时都可以完美运行。但是,当我尝试将其组合到一个查询中时,就会遇到问题。任何人都可以建议一个具有正确语法的代码,以便在 Oracle SQL Developer 中运行。

第一个查询:

 select * from JnlDataSection, JnlList, JnlMedium, JnlMediumMove
 where 
 JnlDataSection.ItemID = JnlList.ItemID AND
 JnlList.ItemID = JnlMedium.ItemID AND
 JnlMedium.ItemID = JnlMediumMove.ItemID;

第二个查询(这需要合并到第一个查询中):

 UserCode = 'Automation' AND     
 LEFT(Date,8)=CONVERT(VARCHAR(8),GETDATE()-1,112));

注意:我在 Oracle SQL Developer 上使用 Microsoft SQL Server 数据库。

【问题讨论】:

  • 您所说的“合并”是什么意思,您遇到的“问题”是什么。请提供您尝试过的示例。
  • 结合我的意思是我想用 UserCode = Automation 和我指定的日期显示这四个表中的所有数据。 UserCode 和 Date 都是这四个表之间的公共键。
  • 第二个代码 sn-p(它不是查询)对 Oracle 无效。您使用的是哪个 DBMS?
  • 第二个查询适用于任何给定的表。例如 Select * from JnlDataSection where UserCode = 'Automation' AND LEFT(Date,8)=CONVERT(VARCHAR(8),GETDATE()-1,112 ));
  • 我在 SQL Oracle Developer 上使用 SQL 数据库。

标签: sql-server tsql date join oracle-sqldeveloper


【解决方案1】:

如果我对您的 cmets 理解正确,则所有四个正在连接的表都包含名为 UserCodeDate 的列。所以我希望你得到一个错误,因为解析器无法判断你指的是哪个表的列。您必须将它们限定为:

select * from JnlDataSection, JnlList, JnlMedium, JnlMediumMove
 where 
 JnlDataSection.ItemID = JnlList.ItemID AND
 JnlList.ItemID = JnlMedium.ItemID AND
 JnlMedium.ItemID = JnlMediumMove.ItemID AND
 JnlDataSection.UserCode = 'Automation' AND     
 LEFT(JnlDataSection.Date,8)=CONVERT(VARCHAR(8),GETDATE()-1,112)

在不了解您的数据库设计的情况下,我不知道您是否应该在所有四个表上添加这些条件,还是只添加一个,或者是否重要。

【讨论】:

  • 我已经添加了必要的 AND ,但现在查询运行没有错误,但没有显示数据,它只是一个空显示。
  • @KJ 您希望在哪个表中找到相关的用户代码和日期?
  • 所有四个表@penguat
  • 好的。请将该信息以及您为回答我们在 cmets 中的问题而提供的其他信息添加到问题中。
【解决方案2】:

最近我在我的 MacBook Pro 中安装了“Oracle SQL Developer”软件以连接到我的 Microsoft SQL Server 数据库,但是我使用“Microsoft SQL Server Management Studio”编写的“T-SQL”脚本不起作用,返回 sintax 错误。
我在网上搜索,发现“Oracle SQL Developer”软件不适用于 Microsoft 的 T-SQL 语言。 因此,“Oracle”在他们的软件中包含了一个工具(Translation Scratch Editor),用于将“T-SQL”语言脚本转换为“PL/SQL”语言。 要使用此工具,请访问菜单Tools > Migrate > Scratch Editor,然后您可以将您的T-SQL 代码转换为“PL/SQL”以由“Oracle SQL Developer”运行。

我正在寻找更好的解决方案,因此这是我目前找到的最佳解决方案。 我希望这个技巧可以帮助您快速解决您的“问题”。

“PL/SQL”语言与 T-SQL 有一些区别, 但是,您可以使用“PL/SQL”语法轻松替换,在 Google 上搜索。

对不起我的英语,但我正在尽我所能提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 2017-11-06
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多