SQL Server从多个表

时间:2015-10-26 21:28:03

标签: sql-server sql-server-2008 tsql

我在尝试从两个表中提取特定数据时遇到问题。根据教科书的说明:

Select * 
From terra..retailsales and terra..retailaccount 
Where retailaccountid in retailsales = 2345678
Get date range from = 3/01/2014 to 6/30/2015

但是,在运行代码时,它会在in中产生语法错误。但对我来说,整个代码看起来都是错误的。有人能帮我吗。我想让这个工作,以完成我的任务。它让我疯了!我联系了教授,他说书中的代码是正确的,但我认为他错了。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您提供的代码不是TSQL - 实际上看起来更像某种伪代码。

在这里猜测你的专栏名称,但如果我说得对,你的查询应该是这样的: -

   SELECT * FROM terra..retailsales
   WHERE retailaccountid = 2345678
   AND [date range] BETWEEN '20140301' AND '20150630'

不确定第二张表的位置。

答案 1 :(得分:0)

您提供的代码非常混乱。我看到[terra..retailsales]表,但不知道你的其他表是什么。您确定需要从两个表中获取数据吗?

您收到的语法错误是什么?你能在代码块中粘贴你正在尝试的确切代码吗?没有多大意义。

为了从两个表中提取数据,您可以将这些表联合到CTE(公用表表达式)中,将它们都放入临时表中,或者将它们连接到select语句中。如果两个表的格式相同,那么为什么你有两个表呢?

您缺少要将[日期]与“2014年3月1日至2015年6月30日”进行比较的列名称。您可以使用getDate()返回当前时间。

Select *
FROM [terra..retailsales]
Where [retailaccountid] = 2345678
AND [<DateColumn>] BETWEEN '3/01/2014' AND '6/30/2015'

您无需再次在“Where retailaccountid in retailsales = 2345678”行中重新指定您的表名。它只是假设零售业来自零售业。

答案 2 :(得分:0)

您可以加入两个表,如下所示:

SELECT * 
FROM terra..retailsales RS
     INNER JOIN terra..retailaccount RC
       ON RS.retailaccountid = RC.ID
WHERE RS.retailaccountid = 2345678
     AND [date] BETWEEN '20140301' AND '20150630'