我的排名脚本运行得很好 - 而它排名前30个月销售的产品,但在过去的几个月里,我的数据发生了一些变化。所以产品名称来自:
product_name
到
product_name@
其中@是某种特殊字符。请注意,特殊字符并不总是只有一个字符,有时特殊字符和名称之间会有一个空格。此外,产品名称并不总是以字母结尾,有时它以数字结尾。数据中的这种奇怪现象似乎是随机发生的,也可能是各种产品名称。我在这张桌子上有超过50,000种产品。有没有办法可以按产品分组?或者可能关闭特殊字符?
答案 0 :(得分:0)
如果这些是尾随符号,请查看此解决方案:
SELECT RTRIM(SUBSTRING(Name, 1, CASE WHEN PATINDEX('%[$#@]%', Name)!=0 THEN PATINDEX('%[$#@]%', Name)-1 ELSE LEN(Name) END)) Word, COUNT(*) Total
FROM (VALUES
('Cat $#@'),
('Cat $'),
('Dog'),
('Dog$'),
('Cat'),
('Cat ')) T(Name)
GROUP BY RTRIM(SUBSTRING(Name, 1, CASE WHEN PATINDEX('%[$#@]%', Name)!=0 THEN PATINDEX('%[$#@]%', Name)-1 ELSE LEN(Name) END))
用括号[$#@]和RTrimmed中的任何特殊字符剪切单词以删除不必要的空格。