我在尝试从两个表中提取特定数据时遇到问题。根据教科书的说明:
Select *
From terra..retailsales and terra..retailaccount
Where retailaccountid in retailsales = 2345678
Get date range from = 3/01/2014 to 6/30/2015
但是,在运行代码时,它会在in中产生语法错误。但对我来说,整个代码看起来都是错误的。有人能帮我吗。我想让这个工作,以完成我的任务。它让我疯了!我联系了教授,他说书中的代码是正确的,但我认为他错了。
有人可以帮忙吗?
答案 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'