SQL中一行需要两列
考虑到下面的值,我需要具有相同ID的记录位于同一行,前提是支付值或利息值为0,而另一个为0。在这种情况下,ID=1将在一行上,但其他行将保持不变SQL中一行需要两列,sql,sql-server,Sql,Sql Server,考虑到下面的值,我需要具有相同ID的记录位于同一行,前提是支付值或利息值为0,而另一个为0。在这种情况下,ID=1将在一行上,但其他行将保持不变 declare @t table(id int, paid varchar(20), interest varchar (20)) insert into @t values(1, '0.00', '3.51'), (1, '1000', '0.00'), (3, '2.50', '0
declare @t table(id int, paid varchar(20), interest varchar (20))
insert into @t values(1, '0.00', '3.51'),
(1, '1000', '0.00'),
(3, '2.50', '0.00'),
(4, '50.00', '2.20'),
(4, '75.00', '0.10')
select * from @t
我需要这样的结果:
ID Paid Interest
1 1000 3.51
3 2.50 0.00
4 50.00 2.20
4 75.00 0.00
我尝试使用windows函数创建一些东西,但无法实现。有人有什么想法吗?嗯。这种方法将列分开,然后重新组合它们 试试这个:
select coalesce(ti.id, tp.id), tp.paid, ti.interest
from (select t.*,
row_number() over (partition by paid) as seqnum
from t
where paid <> 0
) tp full join
(select t.*,
row_number() over (partition by interest) as seqnum
from t
where interest <> 0
) ti
on tp.id = ti.id and tp.seqnum = ti.seqnum;