我有一个表,其中一列可能包含逗号分隔值,例如
| Date ...........| Methods .....|
-
| 2014/10/01 .| A ................|
-
| 2014/11/01 .| C ................|
-
| 2014/08/01 .| A,B .............|
-
| 2015/09/01 .| C ................|
-
| 2015/11/01 .| C, A ............|
-
我想输出一个基于年份和方法的计数摘要,以便生成的结果为
**2014: A = 2, B = 1, C = 1** and **2015: A = 1, B = 0, C = 2**
因此,如果没有逗号分隔列表,它将是一个简单的组,但是对于列表,这将导致A,B被视为单独的条目而不是A和B的+1。这可能吗?< / p>
我希望这是有道理的,并且&#39;表&#39;很清楚。
答案 0 :(得分:-1)
尝试使用SPLIT_STR
函数及以下查询:
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
查询:
SELECT DATE_FORMAT(date,'%Y'),SPLIT_STR(dats,',',1) AS m1, SPLIT_STR(dats,',',2) AS m2
FROM tablename
GROUP BY date, Methods