我需要写一个查询来提取下面的记录。
membership_id,
person_id,
first_name
last_name 昨天加入或打电话的人和没有加入的成员只会有person_id
但是下面的查询是从表中提取所有记录。
SELECT
dbo.pn_membership.membership_id,
dbo.pn.person_id,
dbo.pn.first_name,
dbo.pn.surname,
dbo.pn.create_datetime
FROM
dbo.pn
LEFT OUTER JOIN
dbo.pn_membership
ON dbo.pn.person_id=dbo.pn_membership.person_id AND
dbo.pn.create_datetime >=getdate()-1我只需要运行日期前一天的记录。
发布于 2014-01-10 00:25:15
试试这个版本。
你在“昨天谁加入或打电话”的问题上写的
但是你的查询“谁在过去的24小时里加入或打电话”
这有点不同。另外,正如斯巴基所指出的,你有过这样的缺憾
哪里条款的问题。我的版本是“昨天加入或打电话的人”。
SELECT
dbo.pn_membership.membership_id,
dbo.pn.person_id,
dbo.pn.first_name,
dbo.pn.surname,
dbo.pn.create_datetime
FROM
dbo.pn
LEFT OUTER JOIN
dbo.pn_membership
ON dbo.pn.person_id=dbo.pn_membership.person_id
WHERE
dbo.pn.create_datetime >= DATEADD(Day, DATEDIFF(Day, 0, getdate()), -1)
AND
dbo.pn.create_datetime < DATEADD(Day, DATEDIFF(Day, 0, getdate()), 0)发布于 2014-01-10 00:24:28
试试这个:
SELECT
dbo.pn_membership.membership_id,
dbo.pn.person_id,
dbo.pn.first_name,
dbo.pn.surname,
dbo.pn.create_datetime
FROM
dbo.pn
LEFT OUTER JOIN
dbo.pn_membership
ON dbo.pn.person_id=dbo.pn_membership.person_id
WHERE dbo.pn.create_datetime >=getdate()-1你的询问说..。
通过将日期测试条件移到WHERE子句,可以减少pn表中的行数。通过将日期作为联接的一部分,只会增加从成员资格表获得更多空值列的可能性。
发布于 2014-01-10 00:25:05
您是说它使用日期< getdate()-1来提取记录,还是在person_id位于Null的地方提取记录?如果后者尝试这样做
SELECT dbo.pn_membership.membership_id, dbo.pn.person_id, dbo.pn.first_name,
dbo.pn.surname, dbo.pn.create_datetime FROM dbo.pn LEFT OUTER JOIN dbo.pn_membership ON
dbo.pn.person_id=dbo.pn_membership.person_id AND dbo.pn.create_datetime >=getdate()-1
and dbo.pn.person_id is not NULLhttps://stackoverflow.com/questions/21033894
复制相似问题