Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在变量中传递值_Sql_Sql Server 2008_Sql Server 2005 Express_Dynamics Nav - Fatal编程技术网

Sql 在变量中传递值

Sql 在变量中传递值,sql,sql-server-2008,sql-server-2005-express,dynamics-nav,Sql,Sql Server 2008,Sql Server 2005 Express,Dynamics Nav,我想在变量中传递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

我想在变量中传递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]

我想对增值税、进项税和非增值税求和,然后将值传递到一个变量中,然后该变量将用于我的SELECT语句。

我尝试重新安排您的查询。在查询中,联接条件中包含DTLDVENDLEGARKER查询的零件应无效。如果你要运行它,我不知道如何运行

因为我认为你们求和的方式,我认为你们是使用外连接还是内连接并不重要。带null的行无论如何都会计为零

DECLARE @vatable DECIMAL(18, 2);
DECLARE @inputtax DECIMAL(18, 2);
DECLARE @nonvat DECIMAL(18, 2);

SELECT
    @vatable = SUM(
        CASE
            WHEN GLEntry.[VAT Amount] <> 0
            THEN CAST(GLEntry.Amount AS DECIMAL(18,2)) ELSE 0 END
    ),
    @nonvat = SUM(
        CASE
            WHEN GLEntry.[VAT Amount]  = 0
            THEN CAST(GLEntry.Amount AS DECIMAL(18,2)) ELSE 0 END
    )
FROM
    A as a /* I'm assuming there was a FROM referencing a table "a" */
    [BLI$Detailed Vendor Ledg_ Entry] DtldVendLedger
    INNER JOIN
        ON DtldVendLedger.[Document No_] = a.[Document No_]
    LEFT OUTER JOIN [BLI$Vendor Ledger Entry] VendLedger
        ON VendLedger.[Entry No_] = DtldVendLedger.[Vendor Ledger Entry No_]
    LEFT OUTER JOIN [BLI$G_L Entry] GLEntry
        ON GLEntry.[Document No_] = VendLedger.[Document No_]
WHERE 
        a.??? = ???
    AND DtldVendLedger.[Entry Type] = 2
    AND DtldVendLedger.[Initial Document Type] = 2 
    AND GLEntry.[Source Code] = 'PURCHASES'
    AND GLEntry.[G_L Account No_] NOT IN ('2003','1402','1403','1401');

SET @inputtax = 0.12 * @vatable;

您可以在此查询的顶部使用select查询来显示总和,也可以修改现有查询以将总和作为列获取。如果你可以从这里开始,很好,否则就发布更多关于你下一步想要什么的细节。哇!肖特!谢谢你的支持!!!很抱歉,我的代码不完整,但您仍然成功地重新编写了代码!再次感谢肖特先生的回复!