SQL - 通过使用同一表中的两条现有记录的总和插入新的记录。

问题描述 投票:0回答:1

我正在努力编写一个有效的SQL脚本,从同一张表中获取两条记录,并通过复制任何一条原始记录的值插入新的记录,除了一列使用两行之和。

表的样子是这样的,我想得到的插入结果是

--------------------------------------------------           
| activity | place | begin_date | end_date | price |        
--------------------------------------------------         -------------------------------------------
| running  | gym   | 2020-6-1  | 2020-7-1  |  10   |   >   | sports | gym | 2020-6-1 | 2020-7-1 | 30 |
---------------------------------------------------        -------------------------------------------
| jumping  | gym   | 2020-6-1  | 2020-7-1  |  20   |
---------------------------------------------------

问题是我需要按3列(地点、开始日期和结束日期)分组,因为我有许多不同的地点、开始和结束日期。我想只把跑步和跳跃活动合并到体育项目中,所有其他活动应该不受影响。

sql sql-insert
1个回答
1
投票

关键是你要在 "活动 "的select语句中加入一个case语句,然后用SUM()函数汇总你的价格。它看起来像这样

INSERT INTO dbo.Table
( activity
, place
, begin_date
, end_date
, price
)
SELECT CASE WHEN activity = 'running' OR activity = 'jumping' THEN 'sports' ELSE activity END
, place
, begin_date
, end_date
, SUM(price)
FROM dbo.Table t
 GROUP BY CASE WHEN activity = 'running' OR activity = 'jumping' THEN 'sports' ELSE activity END
, place
, begin_date
, end_date

1
投票

这应该是个好办法

INSERT INTO table (activity, place, begin_date, end_date, price)
SELECT 'sport', [place], [begin_date], [end_date], SUM([price])
FROM table
WHERE activity = 'jumping' OR activity = 'running'
GROUP BY place, begin_date, end_date
© www.soinside.com 2019 - 2024. All rights reserved.