我有一份报告,有时会列出很多重复数据。我在下面做了一个示例,我不想更改表,只希望更改我的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。
您可以在查询中使用变量,并为它们分配当前行值:
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)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。