有这样一个SQL语句:SELECT A.分類CD      AS 分類CD,
       A.分類名      AS 分類,
       B.分類CD      AS 小分類CD,
       B.分類名      AS 小分類,
       C.分類CD      AS 区分CD,
       C.分類名      AS 区分,
       CH.用意名     AS 用意名,
       CH.用意CD     AS 用意CD,
       CH.単価       AS 単価,
       CH.更新日時   AS 更新日時
  FROM C_HI CH,
       (SELECT 分類CD, 分類名
          FROM M_SHU
         WHERE 分類種別CD = '1') A,
       (SELECT 分類CD, 分類名
          FROM M_SHU
         WHERE 分類種別CD = '2') B,
       (SELECT 分類CD, 分類名
          FROM M_SHU
         WHERE 分類種別CD = '3') C
WHERE A.分類CD(+) = CH.分類CD
   AND B.分類CD(+) = CH.小分類CD
   AND C.分類CD(+) = CH.区分
ORDER BY 分類CD, 小分類CD, 区分CD, CAST(用意CD AS INT)如何改成LEFT OUTER JOIN ...ON等SQLSERVER能运行的形式?  

解决方案 »

  1.   

    SELECT A.分類CD      AS 分類CD,
           A.分類名      AS 分類,
           B.分類CD      AS 小分類CD,
           B.分類名      AS 小分類,
           C.分類CD      AS 区分CD,
           C.分類名      AS 区分,
           CH.用意名     AS 用意名,
           CH.用意CD     AS 用意CD,
           CH.単価       AS 単価,
           CH.更新日時   AS 更新日時
      FROM C_HI CH
      LEFT JOIN
           (SELECT 分類CD, 分類名
              FROM M_SHU
             WHERE 分類種別CD = '1') A
      ON A.分類CD = CH.分類CD
      LEFT JOIN
           (SELECT 分類CD, 分類名
              FROM M_SHU
             WHERE 分類種別CD = '2') B
      ON B.分類CD = CH.小分類CD
      LEFT JOIN
           (SELECT 分類CD, 分類名
              FROM M_SHU
             WHERE 分類種別CD = '3') C
      ON C.分類CD = CH.区分
    ORDER BY 分類CD, 小分類CD, 区分CD, CAST(用意CD AS INT)
      

  2.   

    为什么lz的sqlserver无法执行呢
    (+)去掉了不就行了么
      

  3.   

    谢谢hhhdyj(萤火虫) 
    昨天已解决