用left join 肯定不行,如果表a没有,而表b有怎么办?

解决方案 »

  1.   

    问题已解决,原sql语句是正确的。
      

  2.   

    我写了一个简化版,你试试如何?我初步测试没问题。结构肯定是这个简洁,不过性能很难说,你的应当快一些。你的思路不错,交个朋友如何?[email protected]
    SELECT ROW_ID AS ID, ROW_DATE_TIME AS 日期, SUM(COST) AS 成本, SUM(CHARGE) AS 费用
    FROM(
    SELECT  ISNULL(A.ID, B.ID) AS ROW_ID,
    YEAR(ISNULL(A.日期, B.日期)) AS ROW_DATE_TIME,
    A.成本 AS COST,
    B.费用AS CHARGE
    FROM COST 
    FULL JOIN CHARGE 
    ON A.ID = B.ID AND A.日期 = B.日期) AS DATA
    GROUP BY ROW_ID, ROW_DATE_TIME
      

  3.   

    我写了一个简化版,你试试如何?我初步测试没问题。结构肯定是这个简洁,不过性能很难说,你的应当快一些。你的思路不错,交个朋友如何?
    [email protected],刚才的语句有点笔误,现在改过
    SELECT ROW_ID AS ID, ROW_DATE_TIME AS 日期, SUM(COST) AS 成本, SUM(CHARGE) AS 费用
    FROM(
    SELECT  ISNULL(A.ID, B.ID) AS ROW_ID,
    CONVERT(CHAR(6), ISNULL(A.日期, B.日期), 112) AS ROW_DATE_TIME,
    A.成本 AS COST,
    B.费用AS CHARGE
    FROM COST 
    FULL JOIN CHARGE 
    ON A.ID = B.ID AND A.日期 = B.日期) AS DATA
    GROUP BY ROW_ID, ROW_DATE_TIME