如何在SQL中将两行合并为一行?

如何在SQL中将两行合并为一行?,第1张

如何在SQL中将两行合并为一行?

这种转换称为 枢轴 。您没有指定要使用的数据库,但是可以

CASE
在任何系统中使用带有表达式的聚合函数

select employeeid,  max(case when IsActive = 'true' then IndividualPay end) IndPay_IsActive,  max(case when IsActive = 'false' then IndividualPay end) IndPay_IsNotActive,  max(case when IsActive = 'true' then FamilyPay end) FamilyPay_IsActive,  max(case when IsActive = 'false' then FamilyPay end) FamilyPay_IsNotActivefrom yourtablegroup by employeeid

参见带有演示的SQL Fiddle

根据您的数据库,如果您可以同时访问

PIVOT
UNPIVOT
函数,则可以使用它们来获取结果。该
UNPIVOT
函数将
IndividualPay
FamilyPay
列转换为行。完成后,您可以使用
PIVOT
函数创建四个新列:

select *from(  select employeeid,    case when isactive = 'true'      then col+'_IsActive'      else col+'_IsNotActive' end col,     value  from yourtable  unpivot  (    value    for col in (IndividualPay, FamilyPay)  ) unpiv) srcpivot(  max(value)  for col in (IndividualPay_IsActive, IndividualPay_IsNotActive,   FamilyPay_IsActive, FamilyPay_IsNotActive)) piv

请参阅带有演示的SQL Fiddle。

两者给出相同的结果:

| EMPLOYEEID | INDIVIDUALPAY_ISACTIVE | INDIVIDUALPAY_ISNOTACTIVE | FAMILYPAY_ISACTIVE | FAMILYPAY_ISNOTACTIVE |----------------------------------------------------------------------------------------------------------------|          1 |         200 | 100 |     300 |        150 |


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存