我从两个不同的表中提取数据,associate_id是主键。我正在尝试查找Associate_ID在过去4个月和去年的几笔交易中所做的所有销售(在sales.dim中找到sales_charge)。我在处理时间戳和连接时遇到了困难。
这是我到目前为止所知道的:
SELECT associate_id
, sales.dim.sales_charge
FROM dbo.associate
LEFT JOIN dbo.sales ahd
ON associate_id = ahd.associate_id
AND ahd.end_dt > GETDATE()我是SQL和编码的新手,请告诉我我错过了什么。
谢谢
发布于 2018-05-22 23:38:18
如果您想包含所有员工,甚至是那些没有销售额的员工,那么可以使用left join
SELECT a.associate_id, ahd.dim.sales_charge
FROM dbo.associate a LEFT JOIN
dbo.sales ahd
ON a.associate_id = ahd.associate_id AND
ahd.end_dt > DATEADD(month, -4, GETDATE());发布于 2018-05-22 23:59:26
回答“我是使用内连接还是左连接?”当您只想包含来自两个表的匹配记录时,可以使用内部连接,而左(外)连接将包括来自左侧表的所有记录。
在您正在尝试的查询中,如果您希望将所有员工都包括在结果集中,即使他们在过去4个月内没有任何销售额,也可以使用LEFT JOIN。如果您只希望拥有那些拥有一个或多个销售人员的员工,那么可以使用INNER JOIN。
另一个问题是条件"ahd.end_dt > GETDATE()“。这意味着当前时间之后的所有结束日期。将其更改为"ahd.end_dt >DATEADD(月,-4,GETDATE())“
https://stackoverflow.com/questions/50471571
复制相似问题