2017-06-07 7 views
0

メインクエリにCTEを結合するにはどうすればよいですか?CTEとメインクエリの結合

(PS:ありがとうございました - このコミュニティは素晴らしいです)

With tempCTE1locws ([1stchargeableweights], movementref, lastdate) 
as 
(Select 
SUM(c.[Chargeable Weight]) AS [1stchargeableweights], 
mm.MovementRef [movementref], 
MAX (ts.systemstamp) [lastdate] 

FROM  dbo.whsConsignment wc 
INNER JOIN dbo.cgtConsignment c ON c.[Consignment Reference] = wc.ConsignmentReference 
INNER JOIN dbo.tsAdditionalColInfo ts on ts.[ConsignmentReference]= wc.ConsignmentReference 
inner join dbo.movConLink m on m.ConsignmentReference = c.[Consignment Reference] 
inner join dbo.movMovement mm on mm.MovementID = m.MovementID 
INNER JOIN dbo.whsHeader wh ON wh.WhsHeaderID = wc.whsHeaderID 
AND wc.whsHeaderID = wh.WhsHeaderID 
AND wc.StatusCode = 'NL' 
AND c.[Service Type] = 'F' 
AND ts.SlackNoSlack = 'slack' 
or ts.slacknoslack like 'slack - tripped%' 
WHERE wh.ArrDepDate BETWEEN @StartDate AND @EndDate 
GROUP by mm.MovementRef), 

私はmovementrefにdbo.movmovementこのCTEに参加したいと思います。しかし、それを書いて

From dbo.movmovement m 
Inner join dbo.tempCTE1locws locws on locws.movementref = m.movementref 

のように書くことはまったく機能しません。

+0

最後にカンマを削除してから、CTE名をテーブルとして使用してください。例えばSELECT * FROM dbo.movmovement AS m INNER JOIN tempClt AS locws ........あなたはCTEから一回だけ使用します。 –

+0

こんにちは@DaveBrown、あなたの答えに感謝! tempCTE1locwsの後に私は別のCTEを持っています:tempCTE1locwns([1stchargeableweightns]、movementref、lastdate)。最後にカンマを削除すると、次のCTEに影響します。これをどうやって回りますか?もう一度ありがとうございます –

+0

あなたが言うときは全く動作しませんか?何が起こるのですか? – DhruvJoshi

答えて

0

このトピックについての優れたSO回答があります。あなたの一般的な表の任意の 式(CTE)場合は先頭に一度WITHキーワードを使用し、受け入れ答えから

を引用 Multiple CTE in single query

は(RCTE)再帰的であるあなたは、RECURSIVEキーワード を追加する必要がありますでもない場合も上部に、すべてのCTEは再帰的である:

WITH RECURSIVE 
    cte1 AS (...) -- can still be non-recursive 
, cte2 AS (SELECT ... 
      UNION ALL 
      SELECT ...) -- recursive term 
, cte3 AS (...) 

SELECT ... FROM cte3 WHERE ... 

これは、CTEの定義では、あなたが必要とする理由です。

入力ミスが原因でエラーが発生しています。

'tempCTE1locwns'に近い構文が正しくありません。それは私が得ているエラーです

CTE名の余分なnを参照してください。 tempCTE1locwnsである必要があります。tempCTE1locwns

+0

こんにちは@DhruvJoshi!それは素晴らしく働いた:) :)あなたの助けを大変ありがとう:) –

+0

@ダイアナあなたのために働いていれば正解として私の返事を受け入れてください - 他のユーザーが恩恵を受けることができるように:答えが働いていることを知り、回答しました。 – DhruvJoshi

関連する問題