2009-09-30 14 views
0

输入:AA1字符在SQL Server数

输出将是:

Char Count 
A  2 
1  1 
+0

我们在做你的功课吗? http://stackoverflow.com/questions/1495948/how-to-find-the-highest-consecutive-number-set-based-approach – gbn 2009-09-30 06:21:10

+0

你的例子结果似乎不符合数据...如果它不是“C”而不是“c”?为什么结果中没有“1”,如果应该有一个,计数是两到三? – Guffa 2009-09-30 06:42:40

回答

2

这是更容易,因为它的简单计数,而该个连续程序计数您的其他问题。

DECLARE @Numbers TABLE (Num smallint NOT NULL PRIMARY KEY) 

INSERT @Numbers (Num) 
SELECT TOP 12 
    ROW_NUMBER() OVER (ORDER BY c1.NAME) 
FROM 
    sys.columns c1 

DECLARE @STuff TABLE (Seq char(12) NOT NULL PRIMARY KEY) 

INSERT @STuff (Seq) VALUES ('12AABCCDDDDE') 
INSERT @STuff (Seq) VALUES ('333345RRRR11') 

SELECT 
    Seq, Single, COUNT(*) 
FROM 
    @Numbers N 
    CROSS APPLY 
    (SELECT Seq, SUBSTRING(Seq, Num, 1) AS Single FROM @Stuff) S 
GROUP BY 
    Seq, Single 
HAVING 
    COUNT(*) > 1 
ORDER BY 
    Seq, Single