2017-08-22 5 views
2

私は以下のようなデータテーブルを持っていますが、それはn個の列を含むことができる固定されていません。 I 2018CNのLatestValue例:列名と値に基づいてデータテーブルの列を比較するにはどうすればよいですか?

dtFinYearValues

他の行の値列名に基づいて、列の値を比較し、更新する
dtColumnName | 2017AU | 2017CN | 2018AU | 2018CN | 2019CN | 2020CN 
    -------------------------------------------------------------------- 
    Value  | -1234 | -500 | -300 | 1000 | 1000 | -500 
    LatestValue | -1234 | -500 | -300 | 500 | 1000 | -500 

を必要 - 2017CN値の>和(-500)と2018CN値(1000)。値が同じ値で-ve更新LatestValue場合

1):iは、列名を比較し、それに応じて 条件値を更新する必要が上記データテーブルについて

。値が+であれば任意-ve値が+ Veをれる上記データテーブル2018CN値で(のような同じ国の前フィン年間のために存在するが、2017CN値が負であるかどうかをチェックVEの

2)2017CNおよび2018CNの和そう)最新の値を更新する必要があります。

異なる国フィン年の組み合わせがある可能性があるため、列番号をハードコードできません。同じ国のある国の価値を比較する必要がありますのみ。 どうすればvb.netでこれをコード化できますか?

+0

"私は列名を比較する必要があります"。ええと、それを何と比較すればいいですか? – jmcilhinney

+0

2018CNの値は1000です.2018CNはlatestValueの値を更新するために2017CNが存在するかどうかを確認する必要があります。もし存在すれば、その値が-veであるかどうかをチェックする必要があります。私は2017CNと2018CNの値を合計し、上記のdatatableで行われる2018CNのlatestValueに値を更新する必要があります。 – Kumar

+0

例はすべてうまくいきますが、コードでこれらのルールを実装する方法を提案したい場合は、実際のルールが何であるかを知る必要があります。実際には言わずに、各列について、名前を4桁の数字と2文字の文字列に分割し、同じ文字列と1より小さい数の列が存在するかどうかを確認する必要があります?それがあなたがする必要があるものなら、それはあなたがする必要があると言わなければならないものです。それ以外のものが必要な場合は、同様に詳細に記述してください。例はルールの後ではなく、ルールの後に来ます。したがって、「例として」という用語。 – jmcilhinney

答えて

1

DBからデータを別の方法で取り戻すことはできますか?もしそうなら、SQL unpivotを使用してください(元のデータセットを使用してコード内でunpivotを実行することもできますが、手動でコードを作成する必要があります)。これにより、3つの列(名前、値、最新値)が表示されます。これは処理しやすくなります。元のデータセットを使用して更新を行うことはできます。

+0

合意。列は、[年]、[国]、[値]、[最新値] – SSS

関連する問題