开发者社区> 问答> 正文

MSSQL-Declutter报告,替换列中的重复值-> SPACE或QOUTATIONMARK

我有一份报告,有时会列出很多重复数据。我在下面做了一个示例,我不想更改表,只希望更改我的SELECT语句的结果,因此它像右边的示例一样显示(而不是黄色)。

这可以在Excel中完成,但是我不知道如何在MySQL中完成。Maybee有人可以指出正确的方向。

这里最棘手的部分是第4行(“ B”,“ E”),但是即使只有Column1可以轻松地工作,它也会使报表的混乱程度降低很多。

DESTINCT不是我想要达到的目的,我希望保留行(以黄色显示),但当行相同时放一个qoutationsign或一个“空格”,而在更高级的情况下,当2列相同,如“ E-case”中的“ Column2”中所示。

我想一些INNER JOIN可能会有所帮助,而(CASE WHEN THEN END)可能会成功。

Maybee也像ROW_NUMBER和ROW_NUMBER-1一样计数。 在我的示例中创建表:

CREATE TABLE mila_test (
    Column1 VARCHAR(1),
    Column2 VARCHAR(1),
    Value INT
)

要填充它:

INSERT INTO mila_test
VALUES 
    ('A','D','1'),
    ('A','D','2'),
    ('A','E','3'),
    ('B','E','4'),
    ('B','E','5'),
    ('B','F','6'),
    ('B','F','7'),
    ('C','F','8'),
    ('C','G','9')

我没有像T-SQL这样的高级SQL。

展开
收起
祖安文状元 2020-01-05 14:10:04 305 0
1 条回答
写回答
取消 提交回答
  • 您可以在查询中使用变量,并为它们分配当前行值:

    SELECT
        IF(m.COLUMN1 = @c1, '"', m.COLUMN1) AS COLUMN1,
        IF(m.COLUMN1 = @c1 AND m.COLUMN2 = @c2, '"', m.Column2) AS COLUMN2,
        m.`value`,
        @c1 := m.COLUMN1 AS c1_var,
        @c2 := m.Column2 AS c2_var
    FROM 
        mila_test m
    ORDER BY 
        m.`value`
    
    

    输出:

    +---------+---------+-------+--------+--------+
    | COLUMN1 | COLUMN2 | value | c1_var | c2_var |
    +---------+---------+-------+--------+--------+
    | A       | D       |     1 | A      | D      |
    | "       | "       |     2 | A      | D      |
    | "       | E       |     3 | A      | E      |
    | B       | E       |     4 | B      | E      |
    | "       | "       |     5 | B      | E      |
    | "       | F       |     6 | B      | F      |
    | "       | "       |     7 | B      | F      |
    | C       | F       |     8 | C      | F      |
    | "       | G       |     9 | C      | G      |
    +---------+---------+-------+--------+--------+
    9 rows in set (0.00 sec)
    
    2020-01-05 14:10:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载