where条件外部应用的sql查询

时间:2017-04-23 07:21:40

标签: sql-server

我正在使用sql查询但很遗憾地说无法使用where条件。我在下面发布我的查询。

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

我想使用像这样的条件 A.ExportLcId = G.ExportLcId AND(G.PdcTotal + G.PdcTotalUsd)> 0 但是部分不起作用。 任何人都可以提供帮助。

3 个答案:

答案 0 :(得分:0)

如果有条款而不是在哪里?

sorted_data = sorted(data, key=operator.itemgetter(1), reverse=True)

k = int(sys.argv[1])
for result in sorted_data[:k]:
    print result

答案 1 :(得分: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

答案 2 :(得分:0)

将你的部分放在外面的子句中。

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