sql - 为表中的每行返回两行

标签 sql sql-server

我有一个事务表,我希望从每行返回两行。交易表对于每笔交易都有一行。我想以下面的日记帐分录格式返回交易日期和金额:

TransactionDate  TransactionRef      Transaction Amount
  01/01/2019       12345                   500.5

我还需要包含一个借方/贷方列,以使第一行过账为正金额,借方/贷方显示“Db”,然后返回的第二行将为负数,借方/贷方显示“Cr”

我需要查询事务表并返回以下值:

TransactionDate  TransactionRef      Transaction Amount      Db/Cr
  01/01/2019       12345                   500.5              Db
  01/01/2019       12345                   -500.5             Cr

最佳答案

另一个选择是交叉应用

 Select A.TransactionDate
       ,A.TransactionRef
       ,B.TransactionAmount
       ,DrCr  = case when sign(B.TransactionAmount)<0 then 'Cr' else 'Dr' end
 From   YourTable A
 Cross Apply ( values ( TransactionAmount)
                     ,( TransactionAmount*-1)
             ) B(TransactionAmount)

关于sql - 为表中的每行返回两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480300/

相关文章:

mysql - 将查询 1 的值传递给查询 2

java - 从另一个存储过程中的存储过程获取 ResultSet

java - 如何更新与hibernate的关系?

sql - 如何在Microsoft PowerBI中使用SQL Server存储过程?

mysql - 使用SUM和order by子句连接两个表数据的sql查询

mysql - 服务器特定的超慢 SQL 更新命令

php - 如何设置删除查询的限制?

mysql - SQL触发器语句

具有不同列的两个表的 SQL 并集

sql - 查找不同表中对象之间的最小距离