传递变量中的值

时间:2015-11-14 02:58:18

标签: sql sql-server-2008 sql-server-2005-express dynamics-nav

我想在Variable中的SELECT语句中传递我的1列值。

这是我的示例代码:

DECLARE @TotalExpense DECIMAL(18,2)
SELECT a.[Posting Date] AS [Check Date],
    a.[Document No_] AS [Check Number],
    a.[Vendor No_],
    (
    SELECT SUM(CASE WHEN GLEntry.[VAT Amount] <> 0 THEN CAST(GLEntry.Amount AS DECIMAL(18,2)) ELSE 0 END) FROM [BLI$Detailed Vendor Ledg_ Entry] DtldVendLedger
    LEFT JOIN [BLI$G_L Entry] GLEntry
    ON GLEntry.[Document No_] = (SELECT VendLedger.[Document No_] FROM [BLI$Vendor Ledger Entry] VendLedger
                                 WHERE VendLedger.[Entry No_] = DtldVendLedger.[Vendor Ledger Entry No_])
    WHERE DtldVendLedger.[Entry Type] = 2 AND DtldVendLedger.[Initial Document Type] = 2 AND DtldVendLedger.[Document No_] = a.[Document No_]
        AND GLEntry.[Source Code] = 'PURCHASES' AND GLEntry.[G_L Account No_] NOT IN ('2003','1402','1403','1401')
    ) AS [Vatable],

    (
    SELECT SUM(CASE WHEN GLEntry.[VAT Amount] <> 0 THEN CAST(GLEntry.Amount * 0.12 AS DECIMAL(18,2)) ELSE 0 END) FROM [BLI$Detailed Vendor Ledg_ Entry] DtldVendLedger
    LEFT JOIN [BLI$G_L Entry] GLEntry
    ON GLEntry.[Document No_] = (SELECT VendLedger.[Document No_] FROM [BLI$Vendor Ledger Entry] VendLedger
                                 WHERE VendLedger.[Entry No_] = DtldVendLedger.[Vendor Ledger Entry No_])
    WHERE DtldVendLedger.[Entry Type] = 2 AND DtldVendLedger.[Initial Document Type] = 2 AND DtldVendLedger.[Document No_] = a.[Document No_]
        AND GLEntry.[Source Code] = 'PURCHASES' AND GLEntry.[G_L Account No_] NOT IN ('2003','1402','1403','1401')
    ) AS [Input Tax],

    (
    SELECT SUM(CASE WHEN GLEntry.[VAT Amount] = 0 THEN CAST(GLEntry.Amount AS DECIMAL(18,2)) ELSE 0 END) FROM [BLI$Detailed Vendor Ledg_ Entry] DtldVendLedger
    LEFT JOIN [BLI$G_L Entry] GLEntry
    ON GLEntry.[Document No_] = (SELECT VendLedger.[Document No_] FROM [BLI$Vendor Ledger Entry] VendLedger
                                 WHERE VendLedger.[Entry No_] = DtldVendLedger.[Vendor Ledger Entry No_])
    WHERE DtldVendLedger.[Entry Type] = 2 AND DtldVendLedger.[Initial Document Type] = 2 AND DtldVendLedger.[Document No_] = a.[Document No_]
        AND GLEntry.[Source Code] = 'PURCHASES' AND GLEntry.[G_L Account No_] NOT IN ('2003','1402','1403','1401')
    ) AS [Non-Vat]

我想对Vatable,Input Tax和Nonvat求和,然后将值传递给变量,然后该变量将在我的SELECT语句中使用。

1 个答案:

答案 0 :(得分:1)

我尝试重新排列您的查询。在您的查询中,在连接条件中具有bool IsPrime(int input) { //2 and 3 are primes if (input == 2 || input == 3) return true; else if (input % 2 == 0 || input % 3 == 0) return false; //Is divisible by 2 or 3? else { for (int i = 5; i * i <= input; i += 6) { if (input % i == 0 || input % (i + 2) == 0) return false; } return true; } } 查询的部分应该无效。如果你有这个,我不知道如何。

由于我认为你总结的方式,我认为你是否使用外连接或内连接并不重要。无论如何,空DtldVendLedger的行都计为零。

GLEntry