使用递归查询 - STE递归分割的2个柱体P - l
- 包含没有逗号和r
入门 - 中Products
尾,之后,使GROUP BY
通过l
柱:
WITH expandProd as(
SELECT
CASE
WHEN charindex(',', Products) < 1 THEN Products
ELSE LEFT(Products, charindex(',', Products)-1)
END as l, -- the column without comma
CASE
WHEN charindex(',', Products) < 1 THEN NULL
ELSE RIGHT(Products, LEN(Products) - charindex(',', Products))
END as r -- the column with tail
FROM prods
UNION ALL --recursive query that enters again to itself
SELECT
CASE
WHEN charindex(',', r) < 1 THEN r
ELSE LEFT(r, charindex(',', r)-1)
END as l,
CASE
WHEN charindex(',', r) < 1 THEN NULL
ELSE RIGHT(r, LEN(r) - charindex(',', r))
END as r
FROM expandProd
WHERE r is not null --small optimization
)
SELECT l, COUNT(l)
FROM expandProd
GROUP BY l
你为什么不规范化的表? – Madhivanan