Mic*_*l A 3 sql t-sql sql-server-2008
我有一张桌子:
create table practice_table
(
traffic_date datetime ,
door_one integer ,
door_two integer
)
Run Code Online (Sandbox Code Playgroud)
有一些样本数据:
insert into practice_table(traffic_date, door_one, door_two) values ('12-Oct-2006' ,14500 ,11141)
insert into practice_table(traffic_date, door_one, door_two) values ('13-Oct-2006' ,6804 ,5263)
insert into practice_table(traffic_date, door_one, door_two) values ('14-Oct-2006' ,7550 ,6773)
insert into practice_table(traffic_date, door_one, door_two) values ('15-Oct-2006' ,6144 ,5211)
insert into practice_table(traffic_date, door_one, door_two) values ('16-Oct-2006' ,5680 ,3977)
insert into practice_table(traffic_date, door_one, door_two) values ('17-Oct-2006' ,5199 ,3918)
insert into practice_table(traffic_date, door_one, door_two) values ('18-Oct-2006' ,5298 ,3631)
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其移动到具有列的另一个表(称为destination_table)中:
month(datetime)traffic_count(整数)
如何在SQL中创建一个循环,在新表中为10月创建一行,其中包含door_one和door_two的总数,而不显式输入任何数据(例如月份)?
您可以使用光标,但如果我了解您尝试做什么,那么就没有必要了.
;WITH tmp AS (
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, traffic_date), 0) AS month_field, door_one, door_two
FROM practice_table
)
INSERT INTO destination_table (month, traffic_count)
SELECT month_field, SUM(door_one + door_two)
FROM tmp
GROUP BY month_field
Run Code Online (Sandbox Code Playgroud)