我正在努力解决以下问题:
我有两个表:
表格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] 删除。
我来说两句