1

それ自体で完全に正常に実行されるクエリがあり、それをWHERE 句を含む別のクエリ/ステートメントにしINNER JOINたいと考えています。両方のクエリに参加できません。リンクする必要があり ます。不足しているものを提案してください。LEFT JOINSELECTwt.tkinit = t.tkinit

SELECT c.clnum, m.mmatter, ot.tkinit AS 'otkinit', wt.tkinit AS 'wtikint', t.tkrt01,
SUM(mt.mthrwkdb) AS 'whrs2010',
FROM client c, matter m, timekeep ot, timekeep wt, mattimhs mt, periodt p, timerate t
WHERE c.clnum = m.mclient
AND m.mmatter = mt.mtmatter
GROUP BY c.clnum, m.mmatter, ot.tkinit, wt.tkinit

SELECT t.tkinit, t.tkrt01
FROM timerate t
INNER JOIN (
SELECT tkinit, max(tkeffdate) as max_effdate 
FROM timerate WHERE DATEPART(year, tkeffdate) = '2012'
GROUP BY tkinit) mt ON mt.tkinit = t.tkinit AND mt.max_effdate = t.tkeffdate
4

2 に答える 2

1

次のことを試しましたか?

SELECT fields from (SELECT1) s1 
  LEFT JOIN 
  (SELECT2) s2 
  on s1.wt.tkinit = s2.t.tkinit.

二重エイリアスを作成できないため、wt_tkinit や t_tkinit などの select で wt.tkinit と t.tkinit の通常の名前を取得することを忘れないでください。

于 2013-07-22T18:45:52.877 に答える
0
SELECT temp2.tkinit, temp2.tkrt01, temp.clnum, temp.mmatter, temp.otkinit, temp.tkrt01, temp.whrs2010
FROM
    ( SELECT c.clnum, m.mmatter, ot.tkinit AS 'otkinit', wt.tkinit AS 'wtikint', t.tkrt01,
    SUM(mt.mthrwkdb) AS 'whrs2010',
    FROM client c, matter m, timekeep ot, timekeep wt, mattimhs mt, periodt p, timerate t
    WHERE c.clnum = m.mclient
    AND m.mmatter = mt.mtmatter
    GROUP BY c.clnum, m.mmatter, ot.tkinit, wt.tkinit ) temp
LEFT JOIN 
    SELECT t.tkinit, t.tkrt01
    FROM timerate t
    INNER JOIN (
    SELECT tkinit, max(tkeffdate) as max_effdate 
    FROM timerate WHERE DATEPART(year, tkeffdate) = '2012'
    GROUP BY tkinit) mt ON mt.tkinit = t.tkinit AND mt.max_effdate = t.tkeffdate ) temp2
ON temp.wtikint = temp2.tkinit

フィールド名に注意してください。ただし、これが始まりになる可能性があります

于 2013-07-22T18:55:43.087 に答える