2017-04-23 10 views
0

sqlクエリを使用していますが、申し訳ありませんがwhere条件を使用できません。私は以下の質問を投稿します。条件a適用された外部SQLクエリ

私は A.ExportLcId = G.ExportLcIdのような条件を使用したい
SELECT * , CAST(RIGHT(FileNo,3) AS numeric) as IntFileNo 
FROM ExportLcs A 
    OUTER APPLY (
     SELECT SUM(ReceivedTTUsd) AS TtTotal, 
     SUM(ReceivedPDCUsd) AS PdcTotal, 
     SUM(CASE WHEN ReceivedPDCUsd > 0 THEN 1 ELSE 0 END) AS PdcCashCount, 
     SUM(CASE WHEN ReceivedPDCUsd > 0 THEN ConvertRate ELSE 0 END) AS PdcRateTotal, 
     SUM(CASE WHEN ConvertRate > 0 THEN CEILING(ReceivedPDCUsd/ConvertRate) ELSE 0 END) AS PdcTotalUsd, 
     Count(ExportLcId) AS TotalPaymentCount 
     FROM dbo.ExportPayments G 
     WHERE A.ExportLcId = G.ExportLcId AND (G.PdcTotal+G.PdcTotalUsd)>0 
    ) AS G 

AND(G.PdcTotal + G.PdcTotalUsd)> 0 が、一部が機能していません。 どれでもお手伝いできます。

+0

私はあなたがどこに列の別名を使用することを許可されているとは思わない、このようにそれを作ってみる: '(SUM(ReceivedPDCUsd)を有する+ SUM(CASE WHEN ConvertRate> 0 THEN CEILING(ReceivedPDCUsd/ConvertRate )ELSE 0 END))> 0' ところで、なぜ外部結合を使用しないのですか? – Boody

答えて

0

どこで代わりに節がありますか?

SELECT * , CAST(RIGHT(FileNo, 3) AS NUMERIC) AS IntFileNo 
FROM dbo.ExportLcs AS A 
OUTER APPLY (
    SELECT SUM(ReceivedTTUsd) AS TtTotal 
     , SUM(ReceivedPDCUsd) AS PdcTotal 
     , SUM(CASE WHEN ReceivedPDCUsd > 0 THEN 1 ELSE 0 END) AS PdcCashCount 
     , SUM(CASE WHEN ReceivedPDCUsd > 0 THEN ConvertRate ELSE 0 END) AS PdcRateTotal 
     , SUM(CASE WHEN ConvertRate > 0 THEN CEILING(ReceivedPDCUsd/ConvertRate) ELSE 0 END) AS PdcTotalUsd 
     , COUNT(ExportLcId) AS TotalPaymentCount 
    FROM dbo.ExportPayments AS G 
    WHERE A.ExportLcId = G.ExportLcId 
    HAVING (SUM(ReceivedPDCUsd) + SUM(CASE WHEN ConvertRate > 0 THEN CEILING(ReceivedPDCUsd/ConvertRate) ELSE 0 END)) > 0 
) AS G; 
+0

申し訳ありませんが私のために働いています。 –

+0

@SanjoyDebnathはどのようなエラーが出力されるのかを教えてくれますか? _うまく動作しません。 –

+0

エラーはありませんが、クエリー結果はOKではありません。条件が作動しない。 –

0

代わりに参加するので、次のことを試してください外の使用を検討してください:

SELECT * , CAST(RIGHT(FileNo,3) AS numeric) as IntFileNo from ExportLcs A left outer join 
(
SELECT SUM(ReceivedTTUsd) AS TtTotal, 
    SUM(ReceivedPDCUsd) AS PdcTotal, 
    SUM(CASE WHEN ReceivedPDCUsd > 0 THEN 1 ELSE 0 END) AS PdcCashCount, 
    SUM(CASE WHEN ReceivedPDCUsd > 0 THEN ConvertRate ELSE 0 END) AS PdcRateTotal, 
    SUM(CASE WHEN ConvertRate > 0 THEN CEILING(ReceivedPDCUsd/ConvertRate) ELSE 0 END) AS PdcTotalUsd, 
    Count(ExportLcId) AS TotalPaymentCount 
    FROM dbo.ExportPayments) G 
    on A.ExportLcId = G.ExportLcId where (G.PdcTotal+G.PdcTotalUsd)>0 
+0

この場合、メッセージ207、レベル16、状態1、行10 無効な列名 'ExportLcId'。 –

+0

@ SanjoyDebnathの場合、入力した列名を使用してiがクエリを再作成したので、列名を処理する必要があります。 – Boody

0

ただ、where句の外あなたの部分を置きます。

SELECT * , CAST(RIGHT(FileNo,3) AS numeric) as IntFileNo 
FROM Export 
    where (G.PdcTotal+G.PdcTotalUsd)>0Lcs A 
    OUTER APPLY (
     SELECT SUM(ReceivedTTUsd) AS TtTotal, 
     SUM(ReceivedPDCUsd) AS PdcTotal, 
     SUM(CASE WHEN ReceivedPDCUsd > 0 THEN 1 ELSE 0 END) AS PdcCashCount, 
     SUM(CASE WHEN ReceivedPDCUsd > 0 THEN ConvertRate ELSE 0 END) AS PdcRateTotal, 
     SUM(CASE WHEN ConvertRate > 0 THEN CEILING(ReceivedPDCUsd/ConvertRate) ELSE 0 END) AS PdcTotalUsd, 
     Count(ExportLcId) AS TotalPaymentCount 
     FROM dbo.ExportPayments G 
     WHERE A.ExportLcId = G.ExportLcId 
    ) AS G 
関連する問題