Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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_Tsql - Fatal编程技术网

Sql 将两行格式化为一行

Sql 将两行格式化为一行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图将两行结果合并成一行。以下是我的结果: | OwnerTaxRate | OwnerTaxAmount | OwnerTaxTotal | LoanTaxRate | LoanTaxAmount | LoanTaxTotal | 8.4% | 71.40 | 921.4 | NULL | NULL | NULL | NULL | NULL | NULL

我试图将两行结果合并成一行。以下是我的结果:

| OwnerTaxRate | OwnerTaxAmount | OwnerTaxTotal | LoanTaxRate | LoanTaxAmount | LoanTaxTotal
|     8.4%     |     71.40      |     921.4     |    NULL     |     NULL      |    NULL
|     NULL     |     NULL       |     NULL      |    8.4%     |     10.08     |    130.08
以下是我需要返回结果的方式

| OwnerTaxRate | OwnerTaxAmount | OwnerTaxTotal | LoanTaxRate | LoanTaxAmount | LoanTaxTotal
|     8.4%     |     71.40      |     921.4     |    8.4%     |     10.08     |    130.08
它之所以要创建两行,是因为每个订单都有两个基于
LoanHolder
(0或1)的条目。我认为添加一个
CASE
语句来选择我想要拉取哪个LoanHolder是可行的,但显然不行。这是我的
SELECT
语句:

SELECT
    CASE 
        WHEN
            ORC.LoanHolder = 1 
            THEN  CONVERT(VARCHAR(MAX),ORC.Owner_TaxRateBasic) + '%'
        ELSE NULL END AS 'OwnerTaxRate'
    ,CASE 
        WHEN
            ORC.LoanHolder = 1 
            AND ORC.Owner_TaxAmountBasic > 0 
            AND ORC.Owner_TaxAmountSimultaneous = 0 
            AND ORC.Owner_TaxAmountAssociated = 0 
            THEN ORC.Owner_TaxAmountBasic
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxAmountBasic = 0 
            AND ORC.Owner_TaxAmountSimultaneous > 0 
            AND ORC.Owner_TaxAmountAssociated = 0 
            THEN ORC.Owner_TaxAmountSimultaneous
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxAmountBasic = 0 
            AND ORC.Owner_TaxAmountSimultaneous = 0 
            AND ORC.Owner_TaxAmountAssociated > 0 
            THEN ORC.Owner_TaxAmountAssociated
        ELSE NULL END AS 'OwnerTaxAmount'
    ,CASE 
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic > 0 
            AND ORC.Owner_TaxTotalSimultaneous = 0 
            AND ORC.Owner_TaxTotalAssociated = 0 
            THEN ORC.Owner_TaxTotalBasic
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic = 0 
            AND ORC.Owner_TaxTotalSimultaneous > 0 
            AND ORC.Owner_TaxTotalAssociated = 0 
            THEN ORC.Owner_TaxTotalSimultaneous
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic = 0 
            AND ORC.Owner_TaxTotalSimultaneous = 0 
            AND ORC.Owner_TaxTotalAssociated > 0 
            THEN ORC.Owner_TaxTotalAssociated
        ELSE NULL END AS 'OwnerTaxTotal'
    ,CASE 
        WHEN
            ORC.LoanHolder = 0 
            THEN CONVERT(VARCHAR(MAX),ORC.Loan_TaxRateBasic) + '%'
        ELSE NULL END AS 'LoanTaxRate'
    ,CASE 
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic > 0 
            AND ORC.Loan_TaxAmountSimultaneous = 0 
            AND ORC.Loan_TaxAmountAssociated = 0 
            THEN ORC.Loan_TaxAmountBasic
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic = 0 
            AND ORC.Loan_TaxAmountSimultaneous > 0 
            AND ORC.Loan_TaxAmountAssociated = 0 
            THEN ORC.Loan_TaxAmountSimultaneous
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic = 0 
            AND ORC.Loan_TaxAmountSimultaneous = 0 
            AND ORC.Loan_TaxAmountAssociated > 0 
            THEN ORC.Loan_TaxAmountAssociated
        ELSE NULL END AS 'LoanTaxAmount'
    ,CASE 
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic > 0 
            AND ORC.Loan_TaxTotalSimultaneous = 0 
            AND ORC.Loan_TaxTotalAssociated = 0 
            THEN ORC.Loan_TaxTotalBasic
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic = 0 
            AND ORC.Loan_TaxTotalSimultaneous > 0 
            AND ORC.Loan_TaxTotalAssociated = 0 
            THEN ORC.Loan_TaxTotalSimultaneous
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic = 0 
            AND ORC.Loan_TaxTotalSimultaneous = 0 
            AND ORC.Loan_TaxTotalAssociated > 0 
            THEN ORC.Loan_TaxTotalAssociated
        ELSE NULL END AS 'LoanTaxTotal'
FROM
    OrderRateCalculation ORC
WHERE
    ORC.OrdersID = @OrdersID
这个怎么样

SELECT
    MAX(CASE 
        WHEN
            ORC.LoanHolder = 1 
            THEN  CONVERT(VARCHAR(MAX),ORC.Owner_TaxRateBasic) + '%'
        ELSE NULL END) AS 'OwnerTaxRate'
    ,MAX(CASE 
        WHEN
            ORC.LoanHolder = 1 
            AND ORC.Owner_TaxAmountBasic > 0 
            AND ORC.Owner_TaxAmountSimultaneous = 0 
            AND ORC.Owner_TaxAmountAssociated = 0 
            THEN ORC.Owner_TaxAmountBasic
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxAmountBasic = 0 
            AND ORC.Owner_TaxAmountSimultaneous > 0 
            AND ORC.Owner_TaxAmountAssociated = 0 
            THEN ORC.Owner_TaxAmountSimultaneous
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxAmountBasic = 0 
            AND ORC.Owner_TaxAmountSimultaneous = 0 
            AND ORC.Owner_TaxAmountAssociated > 0 
            THEN ORC.Owner_TaxAmountAssociated
        ELSE NULL END) AS 'OwnerTaxAmount'
    ,MAX(CASE 
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic > 0 
            AND ORC.Owner_TaxTotalSimultaneous = 0 
            AND ORC.Owner_TaxTotalAssociated = 0 
            THEN ORC.Owner_TaxTotalBasic
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic = 0 
            AND ORC.Owner_TaxTotalSimultaneous > 0 
            AND ORC.Owner_TaxTotalAssociated = 0 
            THEN ORC.Owner_TaxTotalSimultaneous
        WHEN
            ORC.LoanHolder = 1
            AND ORC.Owner_TaxTotalBasic = 0 
            AND ORC.Owner_TaxTotalSimultaneous = 0 
            AND ORC.Owner_TaxTotalAssociated > 0 
            THEN ORC.Owner_TaxTotalAssociated
        ELSE NULL END) AS 'OwnerTaxTotal'
    ,MAX(CASE 
        WHEN
            ORC.LoanHolder = 0 
            THEN CONVERT(VARCHAR(MAX),ORC.Loan_TaxRateBasic) + '%'
        ELSE NULL END) AS 'LoanTaxRate'
    ,MAX(CASE 
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic > 0 
            AND ORC.Loan_TaxAmountSimultaneous = 0 
            AND ORC.Loan_TaxAmountAssociated = 0 
            THEN ORC.Loan_TaxAmountBasic
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic = 0 
            AND ORC.Loan_TaxAmountSimultaneous > 0 
            AND ORC.Loan_TaxAmountAssociated = 0 
            THEN ORC.Loan_TaxAmountSimultaneous
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxAmountBasic = 0 
            AND ORC.Loan_TaxAmountSimultaneous = 0 
            AND ORC.Loan_TaxAmountAssociated > 0 
            THEN ORC.Loan_TaxAmountAssociated
        ELSE NULL END) AS 'LoanTaxAmount'
    ,MAX(CASE 
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic > 0 
            AND ORC.Loan_TaxTotalSimultaneous = 0 
            AND ORC.Loan_TaxTotalAssociated = 0 
            THEN ORC.Loan_TaxTotalBasic
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic = 0 
            AND ORC.Loan_TaxTotalSimultaneous > 0 
            AND ORC.Loan_TaxTotalAssociated = 0 
            THEN ORC.Loan_TaxTotalSimultaneous
        WHEN
            ORC.LoanHolder = 0
            AND ORC.Loan_TaxTotalBasic = 0 
            AND ORC.Loan_TaxTotalSimultaneous = 0 
            AND ORC.Loan_TaxTotalAssociated > 0 
            THEN ORC.Loan_TaxTotalAssociated
        ELSE NULL END) AS 'LoanTaxTotal'
FROM
    OrderRateCalculation ORC
WHERE
    ORC.OrdersID = @OrdersID

基于您的loanHolder,使用另一个自身实例连接表

    SELECT
        (CONVERT(VARCHAR(MAX),ORC1.Owner_TaxRateBasic) + '%') AS 'OwnerTaxRate'
        ,CASE 
            WHEN
                ORC1.Owner_TaxAmountBasic > 0 
                AND ORC1.Owner_TaxAmountSimultaneous = 0 
                AND ORC1.Owner_TaxAmountAssociated = 0 
                THEN ORC1.Owner_TaxAmountBasic
            WHEN
                ORC1.Owner_TaxAmountBasic = 0 
                AND ORC1.Owner_TaxAmountSimultaneous > 0 
                AND ORC1.Owner_TaxAmountAssociated = 0 
                THEN ORC1.Owner_TaxAmountSimultaneous
            WHEN
                ORC1.Owner_TaxAmountBasic = 0 
                AND ORC1.Owner_TaxAmountSimultaneous = 0 
                AND ORC1.Owner_TaxAmountAssociated > 0 
                THEN ORC1.Owner_TaxAmountAssociated
            ELSE NULL END AS 'OwnerTaxAmount'
        ,CASE 
            WHEN
                ORC1.Owner_TaxTotalBasic > 0 
                AND ORC1.Owner_TaxTotalSimultaneous = 0 
                AND ORC1.Owner_TaxTotalAssociated = 0 
                THEN ORC1.Owner_TaxTotalBasic
            WHEN
                ORC1.Owner_TaxTotalBasic = 0 
                AND ORC1.Owner_TaxTotalSimultaneous > 0 
                AND ORC1.Owner_TaxTotalAssociated = 0 
                THEN ORC1.Owner_TaxTotalSimultaneous
            WHEN
                ORC1.Owner_TaxTotalBasic = 0 
                AND ORC1.Owner_TaxTotalSimultaneous = 0 
                AND ORC1.Owner_TaxTotalAssociated > 0 
                THEN ORC1.Owner_TaxTotalAssociated
            ELSE NULL END AS 'OwnerTaxTotal'
        ,(CONVERT(VARCHAR(MAX),ORC0.Loan_TaxRateBasic) + '%') AS 'LoanTaxRate'
        ,CASE 
            WHEN
                ORC0.Loan_TaxAmountBasic > 0 
                AND ORC0.Loan_TaxAmountSimultaneous = 0 
                AND ORC0.Loan_TaxAmountAssociated = 0 
                THEN ORC0.Loan_TaxAmountBasic
            WHEN
                ORC0.Loan_TaxAmountBasic = 0 
                AND ORC0.Loan_TaxAmountSimultaneous > 0 
                AND ORC0.Loan_TaxAmountAssociated = 0 
                THEN ORC0.Loan_TaxAmountSimultaneous
            WHEN
                ORC0.Loan_TaxAmountBasic = 0 
                AND ORC0.Loan_TaxAmountSimultaneous = 0 
                AND ORC0.Loan_TaxAmountAssociated > 0 
                THEN ORC0.Loan_TaxAmountAssociated
            ELSE NULL END AS 'LoanTaxAmount'
        ,CASE 
            WHEN
                ORC0.Loan_TaxTotalBasic > 0 
                AND ORC0.Loan_TaxTotalSimultaneous = 0 
                AND ORC0.Loan_TaxTotalAssociated = 0 
                THEN ORC0.Loan_TaxTotalBasic
            WHEN
                ORC0.Loan_TaxTotalBasic = 0 
                AND ORC0.Loan_TaxTotalSimultaneous > 0 
                AND ORC0.Loan_TaxTotalAssociated = 0 
                THEN ORC0.Loan_TaxTotalSimultaneous
            WHEN
                ORC0.Loan_TaxTotalBasic = 0 
                AND ORC0.Loan_TaxTotalSimultaneous = 0 
                AND ORC0.Loan_TaxTotalAssociated > 0 
                THEN ORC0.Loan_TaxTotalAssociated
            ELSE NULL END AS 'LoanTaxTotal'
    FROM
        OrderRateCalculation ORC0
        join OrderRateCalculation ORC1 on ORC1.OrdersID = ORC0.OrdersID and ORC1.LoanHolder = 1
    WHERE
        ORC.OrdersID = @OrdersID and ORC0.LoanHolder = 0

显示两行,但仅显示一个查询。如果你使用两个查询,你可以使用一个联合,但我不知道是否是这样。宾果!根据需要返回结果。非常感谢你在我白痴的时刻给予我的及时帮助!