根据与之相同的另一列更改列中的字符串值

问题描述

我想更改一列中的值的名称,该值将基于同一行中另一列中的值。

我正在使用GROUP BY运算符,并使用CUBE关键字。

这是我用来创建表格的代码

CREATE TABLE [dbo].[Purchase_Items]
(
    [ID] [int] NULL,[Model_Name] [varchar](50) NULL,[Brand] [varchar](50) NULL,[Price] [decimal](18,2) NULL,[PurchaseDate] [date] NULL
);

INSERT [dbo].[Purchase_Items] ([ID],[Model_Name],[Brand],[Price],[PurchaseDate]) 
VALUES (5,N'iPhone X',N'Apple',CAST(50000.00 AS Decimal(18,2)),CAST(N'2020-02-03' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (6,N'iPhone 11',CAST(70000.00 AS Decimal(18,CAST(N'2020-02-07' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (7,N'iPhone 6s',CAST(20000.00 AS Decimal(18,CAST(N'2020-02-10' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (8,N'iPhone 8',CAST(30000.00 AS Decimal(18,CAST(N'2020-02-21' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (13,N'Redmi 9',N'Xiaomi',CAST(10000.00 AS Decimal(18,CAST(N'2020-03-21' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (14,N'Redmi K30',CAST(25000.00 AS Decimal(18,CAST(N'2020-04-03' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (15,N'Mi Note 10',CAST(15000.00 AS Decimal(18,CAST(N'2020-04-21' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (16,N'BlackShark',CAST(N'2020-04-20' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (17,CAST(N'2020-04-22' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (18,CAST(N'2020-05-03' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (22,CAST(N'2020-05-21' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (23,N'BlackShark 3',CAST(N'2020-05-22' AS Date));

INSERT [dbo].[Purchase_Items] ([ID],[PurchaseDate]) 
VALUES (25,CAST(N'2020-05-10' AS Date));

这是我的查询

SELECT month(PurchaseDate) Month,CASE WHEN month(PurchaseDate) is null then CONCAT('Grand Total for ',Brand) 
          ELSE COALESCE(Brand,'Monthly Subtotal') end AS Brand,SUM(Price) as 'Total Amount'
FROM Purchase_Items
GROUP BY CUBE(month(PurchaseDate),Brand)

这是输出

Purchase Month   |         Brand           | Total Amount
---------------------------------------------------------
        3        |         Xiaomi          |   10000.00 
        4        |         Xiaomi          |   70000.00
        5        |         Xiaomi          |   30000.00
       NULL      |  Grand Total for Xiaomi |  110000.00
        2        |         Apple           |  170000.00
        4        |         Apple           |   70000.00
        5        |         Apple           |  170000.00
       NULL      |  Grand Total for Apple  |  410000.00           
       NULL      |    Grand Total for      |  520000.00
        1        |     Monthly Subtotal    |  250000.00
        2        |     Monthly Subtotal    |  200000.00
        3        |     Monthly Subtotal    |   70000.00

我想将“总计”更改为“总计”,但我不知道如何。

我在想是否可以根据“总计”列中的最高数字进行更改,因为它们共享同一行,但是也许还有其他方法可以解决此问题。

我该如何解决

解决方法

测试类似

----------------------------------------
|                             value |
| metric | season | type |
------------------------------------
| metric1 |   A   | abc1.|     1
                               1
                               1
                               1
| metric2 |.  B   | abc1.|     2
                               2
                               2
                               2
| metric3 |.  A.  | def1 |     3
                               3
                               3
                               3
| metric4 |   B.  | def1 |     4
                               4
                               4
                               4
----------------------------------------

在第一种情况下-也许CASE WHEN month(PurchaseDate) IS NULL AND Brand IS NULL THEN 'Grand Total' WHEN month(PurchaseDate) IS NULL THEN CONCAT('Grand Total for ',Brand) ELSE COALESCE(Brand,'Monthly Subtotal') END AS Brand,就足够了?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...