我有两个单独的表,我们将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和编码的新手,请告诉我我错过的内容。
由于
答案 0 :(得分:1)
如果您想要包括所有员工,即使是那些没有销售人员的员工,请使用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());
答案 1 :(得分:0)
回答“我是否使用内连接或左连接?”这一问题。如果要仅包含两个表中的匹配记录,则使用内部联接,而左(外部)联接将包括左侧表中的所有记录。
在您尝试的查询中,如果您希望结果集中包含所有员工,即使他们在过去4个月内没有任何销售,请使用LEFT JOIN。如果您只想拥有一个或多个销售的员工,请使用INNER JOIN。
另一个问题是条件“ahd.end_dt> GETDATE()”。这意味着当前时间之后的所有结束日期。将其更改为“ahd.end_dt> DATEADD(月,-4,GETDATE())”