我有这样的数据:
a,x,1
a,x,2
a,y,5
a,z,5
a,t,5
a,s,6
b,x1,11
b,x1,21
b,y1,51
b,z1,51
b,t1,51
我想计算值的变化但是如果第二个字段和第三个字段值没有改变;这不是一个改变。第2和第3字段值都必须更改。
在我上面的例子中;第1行到第2行不是变化但是第2行到第3行是变化的,因为x和2值都被改变了。同样,第3行到第4行是一个变化。
我希望查询结果为
a,3
b,2
谢谢。
答案 0 :(得分:0)
根据你的问题,a和b的计数实际上是1.只有一次Becoz两行都有变化。
CREATE TABLE #t
(
col1 VARCHAR(10),
col2 VARCHAR(10),
col3 INT
)
INSERT INTO #t
VALUES ('a','x',1),
('a','x',2),
('a','y',5),
('a','z',5),
('b','x1',11),
('b','x1',21),
('b','y1',51),
('b','z1',51),
('b','t1',51);
WITH cte
AS (SELECT Dense_rank()
OVER(
partition BY col1
ORDER BY col2) col1_rn,
Dense_rank()
OVER(
partition BY col1
ORDER BY col3) col2_rn,
*
FROM #t)
SELECT a.col1,
Count(1) AS [count]
FROM cte a
LEFT JOIN cte b
ON a.col1 = b.col1
AND a.col1_rn = b.col1_rn + 1
AND a.col2_rn = b.col2_rn + 1
WHERE b.col1_rn IS NOT NULL
GROUP BY a.col1