Sql 将列拆分为两列的查询
您好,我现在有一个ID列和一个金额列。 如果金额为正,则值表示为借方。如果金额为负数,则为信用证。我想知道如何拆分我的金额栏Sql 将列拆分为两列的查询,sql,sql-server,Sql,Sql Server,您好,我现在有一个ID列和一个金额列。 如果金额为正,则值表示为借方。如果金额为负数,则为信用证。我想知道如何拆分我的金额栏 Select * from Test.dbo.Accounts 产生 ID | Amount 1 | 500 2 | -600 第一项是借方,第二项是贷方。我想查询数据库,使其显示如下 ID | Debit | Credit 1 | 500 | null 2 | null |-600 您可以使用case语句查找金额所属的列: S
Select * from Test.dbo.Accounts
产生
ID | Amount
1 | 500
2 | -600
第一项是借方,第二项是贷方。我想查询数据库,使其显示如下
ID | Debit | Credit
1 | 500 | null
2 | null |-600
您可以使用case语句查找金额所属的列:
SELECT id ,
CASE WHEN amount >= 0 THEN amount
ELSE NULL
END AS debit ,
CASE WHEN amount < 0 THEN amount
ELSE NULL
END AS credit
FROM Test.dbo.Accounts
我假设0应该记入借方,但这是您的决定。您可以使用案例说明查找金额属于哪一列:
SELECT id ,
CASE WHEN amount >= 0 THEN amount
ELSE NULL
END AS debit ,
CASE WHEN amount < 0 THEN amount
ELSE NULL
END AS credit
FROM Test.dbo.Accounts
Select ID, Amount as Debit, null as Credit
From Account
Where Amount >= 0
Union All
Select ID, null as Debit, Amount as Credit
From Account
Where Amount < 0
我认为0应该记入借方,但这是您的决定。修复where中列的名称,我认为最好在不使用强制转换的情况下使用它,并将“null”替换为null。老实说,我有点迂腐,我不喜欢看到结果中的值为空!在where中修复列的名称,我认为最好不用强制转换就使用它,并用null替换“null”。老实说,我有点迂腐,我不喜欢看到结果中的值为空!
Select ID, Amount as Debit, null as Credit
From Account
Where Amount >= 0
Union All
Select ID, null as Debit, Amount as Credit
From Account
Where Amount < 0