Mysql 基于行值将行拆分为两行

Mysql 基于行值将行拆分为两行,mysql,Mysql,我真的不明白这是怎么回事 但我要做的是,根据支票金额是否大于0以及act金额是否大于0,将一行拆分为两行 当前mysql语句 Select * from checkdetail where depid = 7 我得到这个结果 字段名为: Type, Amount, dealname, dealernum, serialno, invnum, actnum, actamt, detnotes 价值观: C, 88455.00 SEEGER HOMES, 9149200 BK-51-0353-I

我真的不明白这是怎么回事

但我要做的是,根据支票金额是否大于0以及act金额是否大于0,将一行拆分为两行

当前mysql语句

Select * from checkdetail where depid = 7
我得到这个结果

字段名为:

Type, Amount, dealname, dealernum, serialno, invnum, actnum, actamt, detnotes
价值观:

C, 88455.00 SEEGER HOMES, 9149200 BK-51-0353-I, 122361, 1140, -1696, Overpay
我需要的是

两行一行,金额为88455

C, 88455.00 SEEGER HOMES, 9149200 BK-51-0353-I, 122361, 1140, 0, Overpay
另一个as-1696是这样的数量

C, -1696, SEEGER HOMES, 9149200 BK-51-0353-I, 122361, 1140, 0, Overpay
我知道这个声明和一个案子有关,州政府和工会


感谢Stack希望这是有意义的

您应该使用
union all
语句:

select Type, Amount, dealname, dealernum, serialno, invnum, actnum, 
       0 as actamt, detnotes
from checkdetail where depid = 7
union all
select Type, actnum as Amount, dealname, dealernum, serialno, 
       invnum, actnum, 0, detnotes
from checkdetail where depid = 7

您应该使用
union all
语句:

select Type, Amount, dealname, dealernum, serialno, invnum, actnum, 
       0 as actamt, detnotes
from checkdetail where depid = 7
union all
select Type, actnum as Amount, dealname, dealernum, serialno, 
       invnum, actnum, 0, detnotes
from checkdetail where depid = 7

不,没有。如果它是数据库中的一行,那么这就是您得到的。除了数量,我看不出有什么区别。听起来像是一个糟糕的标准化设计。主键是什么?我在字段名列表中没有看到depid。所有字段都是chkdetid、chkid、detid、type、amount、dealname、dealnum、serilno、invnum、actnum、actamt、detnotes。chkdetid是主键。它与支票表相关,支票表与存款表相关。那么听起来应该涉及两个表。查询应该包含一个联接。不,它不包含。如果它是数据库中的一行,那么这就是您得到的。除了数量,我看不出有什么区别。听起来像是一个糟糕的标准化设计。主键是什么?我在字段名列表中没有看到depid。所有字段都是chkdetid、chkid、detid、type、amount、dealname、dealnum、serilno、invnum、actnum、actamt、detnotes。chkdetid是主键。它与支票表相关,支票表与存款表相关。那么听起来应该涉及两个表。查询应该包含一个联接。因此,如果我得到一行actamt为0,我不想拆分该行。我只想在actamt大于时拆分一行0@BrandonC--然后,您需要做的就是将其作为附加的where条件添加到第二个查询:
where depid=7和actnum>0
@BrandonC,我不确定您想做什么,您是说您需要
actamt>0
。但在您的问题中,示例行的
-1696
小于0!因此,如果我得到一行actamt为0,我不想拆分该行。我只想在actamt大于时拆分一行0@BrandonC--然后,您需要做的就是将其作为附加的where条件添加到第二个查询:
where depid=7和actnum>0
@BrandonC,我不确定您想做什么,您是说您需要
actamt>0
。但在您的问题中,示例行的
-1696
小于0!