当前位置: 代码迷 >> Sql Server >> 关于这段SQL是怎么执行的?多谢(主要是判断语句)
  详细解决方案

关于这段SQL是怎么执行的?多谢(主要是判断语句)

热度:42   发布时间:2016-04-27 19:47:18.0
关于这段SQL是如何执行的?谢谢(主要是判断语句)
上次看到别人写得这个,无奈水平低下,看了半天运行了硬是没搞懂她的逻辑.
CREATE   TABLE   TB(id   INT,dt   INT)
INSERT   TB
SELECT   1,2
UNION   SELECT   2,19
UNION   SELECT   3,19
UNION   SELECT   4,11
UNION   SELECT   5,11
UNION   SELECT   6,12
--drop   table   tb

SELECT   ID,CNT=ISNULL((SELECT   COUNT(A.DT)   FROM   (SELECT   ID=MAX(ID),DT=MAX(DT)   FROM   TB   GROUP   BY   dt)   A   WHERE   T.ID> A.ID   AND   T.DT <> A.DT),0)+1
FROM   TB   T

执行结果是
1     1
2     2
3     2
4     3
5     3
6     4

请问它是如何运行的呢?我尤其没搞懂T.ID> A.ID   AND   T.DT <> A.DT这个判断如何执行呢?   谢谢!
最好能举例说明

------解决方案--------------------
我觉得关键是要知道每一个select的含义,你把每一个子句都执行一下看看就明白了
以下是表A的结果:
ID DT
1 2
5 11
6 12
3 19
  相关解决方案