2013-11-24 2 views
1

У меня есть таблица доступа, которая выглядит следующим образом:Дополнительный доступ Выбор значения столбца

A | B | C | Final 
1 | | | 1 
2 | 3 | | 
4 | 4 | | 4 
5 | 5 | 5 | 5 
    | 4 | 1 | 
9 | 2 | 4 | 

Значения, помеченные звездочкой, являются ниже цели. Мне нужен скрипт, который может выбирать между n -колонками, которые распознают правило приоритета, которое в этом случае равно A > B > C в случае дублирования значений.

A | B | C | Final 
1 | | | 1 
2 | 3 | | *2 
4 | 4 | | 4 
5 | 5 | 5 | 5 
    | 4 | 1 | *4 
9 | 2 | 4 | *9 

До сих пор я достиг других ситуаций в this темы, которая в случае 2, но у меня есть 65000+ пунктов, где ручной выбор значений будет принимать нагрузку времени. Я надеюсь на автоматический сценарий, который может сделать это в Access.

До сих пор я не могу реализовать этот псевдокод:

SELECT ID, A, B, C FROM table 

// loop per row 
if (countUniqueValues(A, B, C) >= 2) 
then 
    if (hasValue(A)) 
     then Final = A.value 
    else if (hasValue(B)) 
     then Final = B.value 
    else Final = C.value 

, потому что один ниже я работаю до сих пор недостатки:

SELECT ID, N1 & 
    // I want to compare each value with NOT NULL and pick based on the pseudocode 
    IIf(N1 NOT NULL) AS Final OR 
    IIf(N2 NOT NULL) AS Final OR 
    IIf(N3 NOT NULL) AS Final 
FROM 
    (SELECT ID, Nz(A) AS N1, Nz(B) AS N2, Nz(C) AS N3 
    FROM table) AS T 
ORDER BY ID; 
+1

Основываясь на том, что вы узнали из предыдущего вопроса, как, по вашему мнению, вы можете? Измените свой вопрос, чтобы показать нам, что вы пробовали до сих пор. –

+0

@GordThompson: обновлено моими текущими идеями. –

ответ

1

Вы можете использовать функцию SWITCH:

SELECT A, 
     B, 
     C, 
     SWITCH 
     ( A IS NOT NULL, A, 
      B IS NOT NULL, B, 
      C IS NOT NULL, C 
     ) AS Final 
FROM T; 
Смежные вопросы