日期:2014-05-18  浏览次数:20771 次

奇怪的sql关联语句问题
我今天写了一个不是很复杂的关联语句 如下:
select * from 
(
  SELECT DATE1,ccarnumber as c1 FROM
  ( select max([CREVIEWDATE]) AS DATE1,ccarnumber from 
(
select [CREVIEWDATE],ccarnumber from [CRM_MEMREVIEW] where [CREVIEWMODE]='10'
)A 
GROUP BY ccarnumber
  ) S
) T1
JOIN 
(SELECT date1 as date2,ccarnumber as c2
  FROM 
  ( select max([CREVIEWDATE]) as date1,ccarnumber  
  from [CRM_MEMREVIEW] GROUP BY ccarnumber 
  )S
  ) T2
ON T1.DATE1=T2.date2 AND T1.c1=T2.c2

这个查询得到的数据总是不正确的,但是我把我其中的T1得到的数据 和T2得到的数据分别插入一个临时表中,然后
再用两个临时表的数据去关联,方法同上只不过中间数据换成了从临时表取数据,得到的数据就是正确的

不知道我以上哪种写法到底为什么不可以,求高人赐教谢谢。。


------解决方案--------------------
首先,你的需求不是太明白,单纯看你的SQL语句的话,存在下面的问题。
你如果是分别取出T1,T2,然后放到临时表,那么再连接的话,结果是固定的。
而你不放入临时表,T1,T2中的数据是根据你连接而即时变化的,原因是因为你用了Max等聚集函数。
如果单纯取数据的话,应该没问题。
------解决方案--------------------
探讨
我今天写了一个不是很复杂的关联语句 如下:
select * from
(
SELECT DATE1,ccarnumber as c1 FROM
( select max([CREVIEWDATE]) AS DATE1,ccarnumber from
(
select [CREVIEWDATE],ccarnumber from [CRM_MEMREVIEW] where [……