Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在没有匹配字段的情况下联接两个选择?_Sql_Sql Server_Etl_Pentaho_Pdi - Fatal编程技术网

Sql 如何在没有匹配字段的情况下联接两个选择?

Sql 如何在没有匹配字段的情况下联接两个选择?,sql,sql-server,etl,pentaho,pdi,Sql,Sql Server,Etl,Pentaho,Pdi,我需要用这两个选项创建一个DIM_团队。第一个来自NBA球队,第二个来自WNBA球队 SELECT E.pk_estado_eeuu, D.pk_division, LEAGUE, CODE, EQUIPO, CIUDAD, PABELLON, FUNDADO, PATROCINIO, T.CONFERENCIA FROM STG_NBA_TEAMS T INNER JOIN STG_TEAM_CODES TC ON(T.EQUIPO = TC.TEAM) INNER JOIN DIM_Est

我需要用这两个选项创建一个DIM_团队。第一个来自NBA球队,第二个来自WNBA球队

SELECT
E.pk_estado_eeuu, D.pk_division, LEAGUE, CODE, 
EQUIPO, CIUDAD, PABELLON, FUNDADO, PATROCINIO,
T.CONFERENCIA
FROM
STG_NBA_TEAMS T
INNER JOIN STG_TEAM_CODES TC ON(T.EQUIPO = TC.TEAM)
INNER JOIN DIM_Estados_EEUU E ON (T.ESTADO = E.codigo)
INNER JOIN DIM_Divisiones D ON(D.division = T.DIVISION)

这应该是我的预期输出

使用。您需要
选择NULL
,其中一个字段与另一个字段之间没有字段:

SELECT
    E.pk_estado_eeuu, 
    D.pk_division, 
    LEAGUE, 
    CODE, 
    EQUIPO, 
    CIUDAD, 
    PABELLON, 
    FUNDADO, 
    PATROCINIO,
    T.CONFERENCIA
FROM
STG_NBA_TEAMS T
INNER JOIN STG_TEAM_CODES TC ON(T.EQUIPO = TC.TEAM)
INNER JOIN DIM_Estados_EEUU E ON (T.ESTADO = E.codigo)
INNER JOIN DIM_Divisiones D ON(D.division = T.DIVISION)
UNION
SELECT
    e.pk_estado_eeuu,
    NULL AS pk_division,
    LEAGUE,
    CODE, 
    EQUIPO,
    CIUDAD, 
    NULL AS PABELLON, 
    NULL AS FUNDADO, 
    NULL AS PATROCINIO,
    WT.CONFERENCIA
FROM
STG_WNBA_TEAMS WT
INNER JOIN STG_TEAM_CODES TC ON(WT.EQUIPO = TC.TEAM)
INNER JOIN DIM_Estados_EEUU E ON (WT.ESTADO = E.nombre)

您还可以使用Pentaho数据集成工具,使用排序合并步骤来实现这一点,该步骤在“设计”部分的“连接”类别下提供


是否要
联合所有
?联接用于包括两个表的列。您需要一个UNION或UNION ALL来包含两个表的行。您可能可以通过对NBA和WNBA团队执行
UNION ALL
来优化查询,然后只连接一次团队代码和状态表(而不是这里的每个子查询一个)。
SELECT
    E.pk_estado_eeuu, 
    D.pk_division, 
    LEAGUE, 
    CODE, 
    EQUIPO, 
    CIUDAD, 
    PABELLON, 
    FUNDADO, 
    PATROCINIO,
    T.CONFERENCIA
FROM
STG_NBA_TEAMS T
INNER JOIN STG_TEAM_CODES TC ON(T.EQUIPO = TC.TEAM)
INNER JOIN DIM_Estados_EEUU E ON (T.ESTADO = E.codigo)
INNER JOIN DIM_Divisiones D ON(D.division = T.DIVISION)
UNION
SELECT
    e.pk_estado_eeuu,
    NULL AS pk_division,
    LEAGUE,
    CODE, 
    EQUIPO,
    CIUDAD, 
    NULL AS PABELLON, 
    NULL AS FUNDADO, 
    NULL AS PATROCINIO,
    WT.CONFERENCIA
FROM
STG_WNBA_TEAMS WT
INNER JOIN STG_TEAM_CODES TC ON(WT.EQUIPO = TC.TEAM)
INNER JOIN DIM_Estados_EEUU E ON (WT.ESTADO = E.nombre)