首页 > 解决方案 > 如何合并此 SQL 行?

问题描述

假设我有一个简单的表:

CREATE TABLE [dbo].[Lease]
(
    [unitcode] [NVARCHAR](50) NOT NULL,
    [chargecode] [NVARCHAR](50) NOT NULL,
    [Jan] [INT] NULL,
    [feb] [INT] NULL,
    [mar] [INT] NULL
) ON [PRIMARY]
GO

INSERT INTO Lease (UNITCODE, CHARGECODE, JAN, FEB, MAR)
VALUES (001, 'RENT', 100, null, null),
       (001, 'RENT', null, 200, null),
       (001, 'RENT', null, null, 300),
       (001, 'PARKING', 50, 50, 50);

我正在尝试将“租金”列合并为一行 - 此行将显示 jan、feb 和 mar 的所有非空值。关于我如何做到这一点的任何想法?

这是当前的输出:

在此处输入图像描述

这是我想要实现的目标:

在此处输入图像描述

谢谢你,阿西夫

标签: sqlsql-serverwindowstsql

解决方案


我认为您正在寻找一个简单的聚合和 Group By

假设您希望 RENT 作为第一行,我添加了条件排序。

例子

Select unitcode
      ,chargecode
      ,Jan = sum(Jan)
      ,Feb = sum(Feb)
      ,Mar = sum(Mar)
 From lease
 Group By unitcode
         ,chargecode
 Order By unitcode
         ,case when chargecode='Rent' then 0 else 1 end
         ,chargecode

退货

unitcode    chargecode  Jan Feb Mar
1           RENT        100 200 300
1           PARKING     50  50  50

推荐阅读