Sql 对于其他表中的每个唯一ID,重复左表中的所有行
我有一个团队,他们在三个指标上得分;销售、销售线索和时间 我在MS Access中有一个表(tblScores),它保存这些分数,但只有在有分数的情况下。(例如,如果某人没有销售记录,则他们将没有销售记录) 我正在尝试创建一个SQL查询,该查询将为上表中的每个用户输出三条记录(每个可能的指标),其中包括空值,而这些值没有该指标的条目。e、 gSql 对于其他表中的每个唯一ID,重复左表中的所有行,sql,ms-access,Sql,Ms Access,我有一个团队,他们在三个指标上得分;销售、销售线索和时间 我在MS Access中有一个表(tblScores),它保存这些分数,但只有在有分数的情况下。(例如,如果某人没有销售记录,则他们将没有销售记录) 我正在尝试创建一个SQL查询,该查询将为上表中的每个用户输出三条记录(每个可能的指标),其中包括空值,而这些值没有该指标的条目。e、 g | USERID | Metric | Score | ---------------------------------- | 205
| USERID | Metric | Score |
----------------------------------
| 20511 | Sales | 12 |
| 20511 | Leads | 9 |
| 20511 | Hours | 8 |
| 20694 | Sales | 10 |
| 20694 | Leads | Null |
| 20694 | Hours | 7.5 |
我已经建立了另一个表(tblMetrics),其中只包含这3个指标
| Metric |
---------------
| Sales |
| Leads |
| Hours |
并尝试在度量表和分数表之间进行左连接
SELECT tblMetrics.*, TblScores.UserID, TblScores.Score
FROM tblMetrics LEFT JOIN TblScores ON tblMetrics.Metric = TblScores.Metric;
但它仍然没有给出期望的输出。有人知道这是否可能吗?您需要先执行
交叉联接
以生成所有组合,然后执行左联接
以查找缺少的组合并分配空值
我检查访问语法,交叉连接应该这样写
SELECT DISTINCT M.Metric, S.USERID
FROM tblMetric M, tblScore S
而左连接
应该是
SELECT userMetrc.*, S.Score
FROM ( SELECT DISTINCT M.Metric, S.USERID
FROM tblMetric M, tblScore S
) userMetric
LEFT JOIN tblScore S
ON ( userMetric.USERID = S.USERID
AND userMetric.Metric = S.Metric )
您需要先执行
交叉联接
以生成所有组合,然后执行左联接
以查找缺少的组合并分配空值
我检查访问语法,交叉连接应该这样写
SELECT DISTINCT M.Metric, S.USERID
FROM tblMetric M, tblScore S
而左连接
应该是
SELECT userMetrc.*, S.Score
FROM ( SELECT DISTINCT M.Metric, S.USERID
FROM tblMetric M, tblScore S
) userMetric
LEFT JOIN tblScore S
ON ( userMetric.USERID = S.USERID
AND userMetric.Metric = S.Metric )
你能给我们看看你的tblMetrics和TBLScore吗?不知道哪一个在这里。谢谢你的回复。我已经更新了我的问题,希望能让它更清楚一点。你能给我们看看你的tblMetrics和TblScores,不知道哪一个在这里。嗨。谢谢你的回复。我已经更新了我的问题,希望能把它弄清楚一点。我已经尝试了这两种解决方案,并且在from子句中遇到语法错误?可能是Access中不支持交叉连接吗?我检查Access中交叉连接的语法,尝试使用distinct。对于
和条件,您可能需要()
。最后一个查询工作正常。谢谢:-)第一个问题很抱歉,我的访问权限有点生锈;)你好我已经尝试了这两种解决方案,并且在from子句中遇到语法错误?可能是Access中不支持交叉连接吗?我检查Access中交叉连接的语法,尝试使用distinct。对于和条件,您可能需要()
。最后一个查询工作正常。谢谢:-)第一个问题很抱歉,我的访问权限有点生锈;)