【发布时间】:2020-05-10 04:27:34
【问题描述】:
我有两个查询,每个查询的输出如下所示:
SELECT UserID, ActivityDate, ActivityDay, ActivityTime
FROM Activities
WHERE ActivityType='MYS'
SELECT USerID, TimeFrom, TimeTo, ActivityDay
FROM [dbo].[userActivities] WHERE UserID=123
预期结果:
这两个查询可以使用以下链接:
- Activity.UserID = userActivities.UserID
- Activity.ActivityDay = userActivity.ActivityDay
我需要从第一个数据集中获取所有 4 行,并且需要添加的新列基于第二个查询中的值。 ActvityDay 7 有两条记录,因为在下一个查询中有两条记录为 ActvityDay 7
我试图使用LEFT JOIN 提取数据,但没有得到想要的结果。有人可以告诉我我做错了什么吗?
我正在尝试的查询:
SELECT DISTINCT AD.UserID, AD.ActiityDate, AD.ActivityDay, AD.ActivityTime,
CASE WHEN AD.ActiityDate = userActivities.ActivityDay THEN 'Yes' ELSE 'No' END AS [ActivityExists],
CASE WHEN AD.ActiityDate = userActivities.ActivityDay THEN UA.TimeFrom ELSE '' END AS [Time],
FROM Activities AD LEFT JOIN userActivities UA ON AD.UserID=UA.UserID
AND AD.ActiityDate = userActivities.ActivityDay
【问题讨论】:
-
ActivityDate和ActivityDay似乎不适合直接比较。半相关,你应该可以使用UA.UserID IS NULL作为第一种情况的条件。 -
请不要使用图片,将数据格式化为文本。
-
请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)How to Ask 适用于包括 DBMS 和 DDL 的 SQL,其中包括约束、索引和表格初始化。隔离第一个意外子表达式及其输入和输出。 (调试基础。)询问一下。
标签: sql-server join left-join ssms