基于值的SQL JOIN表

MG92

我正在努力解决以下问题:

我有两个表:

表格1:

kalib_name  var_name  y_0  y_1  y_2  ...  y_10

表_2:

var_name

我现在想构造一个表,其中每个kalib_name都具有table_2形式的所有var_name ,即使table_1中不存在kalib_name var_name组合,并用NULL或0填充其他列(y_0 ... y_10)。尝试过:

SELECT * FROM 
    (SELECT DISTINCT table_2.[var_name] AS variable_name
    FROM table_2
    WHERE table_2.[var_name] IS NOT NULL) AS A
LEFT JOIN table_1
ON (A.variable_name = table_1.[var_name])

但这似乎不起作用。我在table_2中有69个不同的值和101个不同的kalib_names。我希望得到一张长度为69 * 101的表格,但是我的长度只有3800个左右。

完善

考虑所有组合对的交叉联接的组合,然后LEFT JOIN从已包装的现有对中提取数据NZ()NULL进行零处理:

SELECT pairs.kalib_name, pairs.var_name, 
       NZ(table1.y_0) AS y_0,
       NZ(table1.y_1) AS y_1,
       NZ(table1.y_2) AS y_2,
       NZ(table1.y_3) AS y_3,
       ...
       NZ(table1.y_10) AS y_10,
FROM 

  (SELECT t1.kalib_name, t2.var_name
   FROM (select distinct kalib_name from table1
         where kalib_name is not null) AS t1, 
        (select distinct var_name from table2 
         where var_name is not null) AS t2
  ) pairs

LEFT JOIN table1
   ON pairs.[kalib_name] = table1.[kalib_name]
   AND pairs.[var_name] = table1.[var_name] 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章