合并行代码返回空内容

时间:2013-12-31 06:31:41

标签: sql ms-access

我在同一个表中合并了两列。我正在关注answer in this thread

我有一个看起来像这样的表,var作为合并变量(它有一个id但不包括在这里):

var1    var2    var
1               1
        2       2
8               8    
        10      10        

我使用下面的代码获取相关列的所有值,它们完美地运行。这两个相关的列组合成一个具有各自值的列。

# code1
SELECT ID, "var1" AS var, var1 AS val FROM source
UNION ALL
SELECT ID, "var2" AS var, var2 AS val FROM source

接下来,我需要获得每行和每列组合的唯一值:

# code2
SELECT ID, First(val) AS FirstOfVal
FROM (
    SELECT DISTINCT ID, val
    FROM code1
    WHERE val IS NOT NULL
  )
GROUP BY ID
HAVING COUNT(*) = 1

code2我希望得到一个表格,其中FirstOfVal列填充了值,但在我的情况下没有内容。

我该如何解决这个问题?

我尝试在其他列的组合中使用它,它完美地工作除了这个我正在修改的列。我能想到这些列的唯一区别是我有一个问题合并是它们包含很多空行(如上所示),每列都有自己的值,没有两行的列都有这两个值。

1 个答案:

答案 0 :(得分:0)

好的,我终于解决了!

以下是此特例的步骤:

  1. SELECT id和所需的列。请注意,这要求的列都包含值(我没有对包含值的两列进行测试,无论是否相同)。

    # query1
    SELECT id, col1 & col2 AS merged
    FROM table_name;
    
  2. 将查询结果插入到临时表中以确保安全性(最好将其保存,以免遇到错误)。

    # query2
    SELECT * INTO temp
    FROM query1
    WHERE FirstOfVal;
    
  3. 将临时表的内容插入主表。

    UPDATE table_name
        INNER JOIN temp ON table_name.id = temp.id
        SET table_name.merged = [temp].[merged];
    
  4. 现在,您已将合并的列放入源表中。