第一部分:
SELECT A.*
  FROM A,
       (SELECT jcode, MAX(wdate) AS wdate
          FROM A
         GROUP BY jcode) B
 WHERE A.jcode= B.jcode
   AND A.wdate= B.wdate第二部分:
select a.*,b.JCode,b.FundName from BM_FCombWinTbl a inner join BM_FCombDetailTbl b
      on a.DetailId=b.DetailId
       where b.CombId in(select CombId from BM_FundCombTbl
          where CombType=101201 and UserId=888)请问:如何把第一部分的表A用第二部分的语句来代替?
我写成下面这样提示“对象名 't' 无效。”
select t.* from
(
select a.*,b.JCode,b.FundName from BM_FCombWinTbl a inner join BM_FCombDetailTbl b
      on a.DetailId=b.DetailId
       where b.CombId in(select CombId from BM_FundCombTbl
          where CombType=101201 and UserId=888)
) t,(select jcode,max(wdate) as wdate from t group by jcode) b where t.jcode=b.jcode and t.wdate=b.wdate

解决方案 »

  1.   

    ) t,(select jcode,max(wdate) as wdate from t group by jcode) b where t.jcode=b.jcode and t.wdate=b.wdate这t哪有?
      

  2.   

    列出表 BM_FCOMBWINTBL 与 BM_FCOMBDETAILTBL、BM_FUNDCOMBTBL 的关系(PK or FK)?
      

  3.   

    确认 A.× 中是否有字段名为WDATE的字段?
      

  4.   


    SELECT A.*
      FROM (select a.*, b.JCode, b.FundName
              from BM_FCombWinTbl a
             inner join BM_FCombDetailTbl b on a.DetailId = b.DetailId
             where b.CombId in (select CombId
                                  from BM_FundCombTbl
                                 where CombType = 101201
                                   and UserId = 888)) A,
           (SELECT jcode, MAX(wdate) AS wdate
              FROM (select a.*, b.JCode, b.FundName
                      from BM_FCombWinTbl a
                     inner join BM_FCombDetailTbl b on a.DetailId = b.DetailId
                     where b.CombId in (select CombId
                                          from BM_FundCombTbl
                                         where CombType = 101201
                                           and UserId = 888)) A
             GROUP BY jcode) B
     WHERE A.jcode = B.jcode
       AND A.wdate = B.wdate
      

  5.   

    将*改为你真正需要的字段,你上面的代码也可以修改如下(由于我没有具体的表,没有经过测试):
    SELECT AA.*
      FROM (SELECT A.*, B.JCODE, B.FUNDNAME
              FROM BM_FCOMBWINTBL A, BM_FCOMBDETAILTBL B, BM_FUNDCOMBTBL C
             WHERE A.DETAILID = B.DETAILID
               AND B.COMBID = C.COMBID
               AND C.COMBTYPE = 101201
               AND C.USERID = 888) AA,
           (SELECT JCODE, MAX(WDATE) AS WDATE FROM T GROUP BY JCODE) BB
     WHERE AA.JCODE = BB.JCODE
       AND AA.WDATE = BB.WDATE
      

  6.   

    Create Proc MyTest_ProcBEGIN
    SET NOCOUNT ONselect a.*,b.JCode,b.FundName into #temp from BM_FCombWinTbl a inner join BM_FCombDetailTbl b
          on a.DetailId=b.DetailId
          where b.CombId in(select CombId from BM_FundCombTbl
              where CombType=101201 and UserId=888) SELECT #temp.*
      FROM #temp,
          (SELECT jcode, MAX(wdate) AS wdate
              FROM #temp
            GROUP BY jcode) B
    WHERE #temp.jcode= B.jcode
      AND #temp.wdate= B.wdateEND GO
      

  7.   

    最后再 Drop 掉这个临时表drop table #temp
      

  8.   

    select * into # from (你的语句)tp