SQL列更新以解决数据质量问题

时间:2019-02-01 11:19:48

标签: sql-server sql-server-2008

我无法弄清楚如何为此编写“智能代码”。 problem sample

在这种情况下,我希望前两种情况的最终结果是:

product_cat_name

A_SEE

A_BEE

业务规则是一个product_cat_name只能属于一个group,但是由于数据质量问题,有时我们有一个product_cat_name属于两个不同的group 。在这种情况下,作为特殊情况,我们希望将group附加到product_cat_name上,以使product_cat_name变得唯一。

听起来很简单,但我对此深感不安。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

类似这样的东西:

sorters="
    function(attr) {
        var sortAs = $.pivotUtilities.sortAs;
        if (attr == \"ContractCalendarMonth\") 
        { 
            return sortAs([\"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"1\", \"2\", \"3\",\"4\", \"5\", \"6\"]);
        }
    }"

我使用2017 STRING_AGG()作为编写它的最短时间-但是您可以轻松地将其更改为使用递归或XML路径

答案 1 :(得分:0)

将其分解成小块很简单。

您需要明显地更新表,并更改product_cat_name的值。这很容易。

新值应为group + product_cat_name。很简单。

您只想在product_cat_name与多个组相关联时执行此操作。这可能是棘手的部分,但是也可以将其分解为容易的小片段。

您需要确定哪些product_cat_name具有多个组。这很容易。 GROUP BY product_cat_name HAVING COUNT(DISTINCT Group) > 1

现在,您需要使用它来将UPDATE限制为仅那些product_cat_name。这很容易。 WHERE product_cat_name IN (Subquery using above logic to get PCNs that have more than one Group)

所有简单步骤。将它们放在一起,您便有了解决方案。