Как сравнить столбцы таблицы данных на основе имени столбца и значения?

У меня есть таблица данных, как показано ниже, которая не исправлена, она может содержать n столбцов. Мне нужно сравнить значения столбца на основе имени столбца и обновить другое значение строки

E.g

dtFinYearValues

    dtColumnName | 2017AU | 2017CN | 2018AU | 2018CN | 2019CN | 2020CN
    --------------------------------------------------------------------
     Value       | -1234  | -500   | -300   | 1000   | 1000   | -500
     LatestValue | -1234  | -500   | -300   | 500    | 1000   | -500

LatestValue of 2018CN --> Сумма значения CN 2017 (-500) и значения CN 2018 (1000).

Для приведенной выше таблицы данных мне нужно сравнить имя столбца и соответственно обновить значение. Условия:

1) Если значение равно -ve, обновите LatestValue с таким же значением.

2) Если значение равно +ve, проверьте, существует ли какое-либо значение -ve для предыдущего конечного года той же страны, например (в приведенных выше данных значение 2018CN равно +ve, но значение 2017CN отрицательное, поэтому необходимо обновить сумму 2017CN и 2018CN для 2018CN --> Последнее значение.)

Я не могу жестко закодировать номер столбца, так как может быть разная комбинация страны и года, мне нужно сравнить значение одной страны только с той же страной. Как я могу закодировать это в vb.net?


person Kumar    schedule 22.08.2017    source источник
comment
мне нужно сравнить имя столбца. Эм, с чем сравнить?   -  person jmcilhinney    schedule 22.08.2017
comment
Значение 2018CN равно 1000, чтобы 2018CN обновил значение lastValue, мне нужно проверить, существует ли 2017CN. Если существует, мне нужно проверить, является ли это значение -ve, если оно равно -ve, мне нужно суммировать значения 2017CN и 2018CN и обновить значение до lastValue 2018CN, что делается в приведенной выше таблице данных.   -  person Kumar    schedule 22.08.2017
comment
Все примеры хороши, но нам нужно знать, каковы фактические правила, если вы хотите, чтобы мы предложили, как реализовать эти правила в коде. Вы говорите, не говоря на самом деле, что для каждого столбца вам нужно разбить имя на четырехзначное число и двухбуквенную строку, а затем проверить, существует ли столбец с той же строкой и числом, которое на 1 меньше ? Если это то, что вам нужно сделать, то это то, что вы должны были сказать, что вам нужно сделать. Если вам нужно что-то еще, пожалуйста, опишите это так же подробно. Примеры идут ПОСЛЕ правил, а не раньше. Отсюда и термин в качестве примера.   -  person jmcilhinney    schedule 22.08.2017


Ответы (1)


Можно ли вернуть данные из БД другим способом? Если это так, посмотрите на использование SQL unpivot (unpivot также может быть выполнен в вашем коде с использованием исходного набора данных, но вам придется вручную кодировать это). Это даст вам 3 столбца (имя, значение, последнее значение). Это будет легче обрабатывать. Обновления по-прежнему можно выполнять с использованием исходного набора данных.

person Ian    schedule 22.08.2017
comment
Согласованный. Столбцы должны быть [Год], [Страна], [Значение], [LatestValue]. - person SSS; 22.08.2017