首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙看个查询解决办法

2012-02-03 
帮忙看个查询在视图A中从试图B中查寻纪录。包含TransID,TransTime,Name,Payment等字段。查询的结果中会出现T

帮忙看个查询
在视图A中从试图B中查寻纪录。包含TransID,TransTime,Name,Payment等字段。查询的结果中会出现TransID相同的纪录,目前想得到的结果是对于TransID相同的纪录只取TransTime最大的那一条。也就是每一条TransID只能出现一条记录。
我目前的视图写法如下
SELECT   TransID,TransTime,Name,Payment
FROM
{
    SELECT   TransID,TransTime,Name,Payment
    FROM   B   AS   B_1   INNER   JOIN
    {
          SELECT   MAX(TransTime)   TransTime,TransID
          FROM   B
          GROUP   BY   TransID
    }   AS   B_2
    ON   B_1.TransTime=B_2.TransTime   AND   B_1.TransID=B_2.TransID
}
这样的话,需要两次查询B视图,效率不高。大家帮忙优化一下。

[解决办法]
--如:
Select * from B as t
where not exists(Select * from B where
TransID=t.TransID and TransTime> t.TransTime)
[解决办法]
SELECT
B_1.TransID,
B_1.TransTime,
B_1.Name,
B_1.Payment
FROM B AS B_1 INNER JOIN
(
SELECT MAX(TransTime) TransTime,TransID
FROM B
GROUP BY TransID
) AS B_2
ON B_1.TransTime=B_2.TransTime AND B_1.TransID=B_2.TransID
[解决办法]
对视图似乎没有太好的办法。

热点排行