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