SQL SERVER - Поиск всех значений в столбце A на основе столбца B - PullRequest
0 голосов
/ 08 апреля 2020
       Column A    Column B    Column C
Row1     1,3,4         4         0
Row2     2,5,6         6         0
Row3     1,2,3         3         1

Итак, я хочу найти самый простой способ проверить, когда столбец A, который должен иметь значения 1,2,3 и 4, используя столбец B, и вернуть 1 если столбец A содержит все числа в новом столбце C.

Таким образом, для строки 1 и строки 2 столбец C будет равен 0, поскольку ни одно из них не хранит все значения, которые они должны иметь. (Строка 1 должна была иметь 1,2,3,4, а строка 2 должна иметь 1,2,3,4,5,6). Столбец 3 строки C будет иметь 1, потому что он имеет все значения, которые он должен иметь. Я не могу просто посчитать количество значений, потому что иногда в столбце А есть повторяющиеся значения.

Я пытаюсь закодировать это не слишком долго, потому что мне нужно это сделать до столбца B = 100.

Спасибо всем!

1 Ответ

0 голосов
/ 09 апреля 2020

Исходя из языков типов C / C ++ / Java, простой подход заключается в просмотре каждой строки для каждого значения - что-то вроде этого (не на любом конкретном языке)

for (int i = 0; i < NUM_ROWS; i++)
{
    int bV = columns['B'][i]
    list<int> aV = columns['A'][i]
    if (aV.length != bV) {
        // If A doesn't have B items in it then
        // they can't possibly match.
        columns['C'][i] = 0;
    }
    else {
        // have to inspect each element
        int ok = 1
        for(int j = 1; j <= bV; j++) {
            if (aV[j] != j) {
                ok = 0
                break
            }
        }
        columns['C'][i] = ok
    }
}

Если ваш язык делает Сравнение списков и максимально допустимое значение в столбце B не слишком велико, тогда вы можете заранее определить список для каждого значения B, а затем просто сравнить все значения A

if (columns['A'][i] == expectedLists[colB]) {
    columns['C'][i]= 1
}
else {
    columns['C'][i]= 0
}

. Вы также можете сделать что-то подобное с строковые представления списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...