Sql 在SELECT中将两个列表合并在一起
如何将两个表组合成不包含主键的新表 例如: 第一张表:Sql 在SELECT中将两个列表合并在一起,sql,sql-server,database,sql-server-2014,Sql,Sql Server,Database,Sql Server 2014,如何将两个表组合成不包含主键的新表 例如: 第一张表: Team_Code ID ---------------------------------- 433 203994834 436 203994834 436 309228372 435 309228373 434 309228374 433
Team_Code ID
----------------------------------
433 203994834
436 203994834
436 309228372
435 309228373
434 309228374
433 399064113
number_of_times Team_Code
------------------------------------
3 433
2 434
1 435
1 436
number_of_times Team_Code ID
---------------------------------------------
3 433 203994834
2 434 309228374
1 435 309228373
1 436 203994834
第二张表:
Team_Code ID
----------------------------------
433 203994834
436 203994834
436 309228372
435 309228373
434 309228374
433 399064113
number_of_times Team_Code
------------------------------------
3 433
2 434
1 435
1 436
number_of_times Team_Code ID
---------------------------------------------
3 433 203994834
2 434 309228374
1 435 309228373
1 436 203994834
输出的第一行应该如下所示:
Team_Code ID
----------------------------------
433 203994834
436 203994834
436 309228372
435 309228373
434 309228374
433 399064113
number_of_times Team_Code
------------------------------------
3 433
2 434
1 435
1 436
number_of_times Team_Code ID
---------------------------------------------
3 433 203994834
2 434 309228374
1 435 309228373
1 436 203994834
使用CTE以提高可读性-
WITH CTE1 AS
(
SELECT [Team_Code],[ID] FROM Fireman_Team WHERE Team_Code in (
SELECT Answer.Team_Code FROM Answer WHERE
Answer.Call_Number IN(
SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started
BETWEEN ('2016-01-01 00:00:00') AND
('2016-01-31 23:59:59')) AS SSS))
)
;WITH CTE2 AS
(
SELECT COUNT(Team_Code) as number_of_times,
Team_Code FROM (SELECT Answer.Team_Code FROM Answer WHERE
Answer.Call_Number IN(
SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started
BETWEEN ('2016-01-01 00:00:00') AND
('2016-01-31 23:59:59')) AS SSS)
) AS re GROUP BY Team_Code
)
SELECT b.[number_of_times], b.[Team_Code], a.[ID]
FROM CTE1 a
INNER JOIN CTE2 b
ON a.[Team_Code] = b.[Team_Code]
您使用的是
MySQL
还是sqlserver
?请适当标记从第一次查询中有两行带有Team_code 433
,您如何决定选择哪一行?您为什么选择203994834
而不是399064113
作为Team_code
:433
我想选所有的。我没有写所有的表,因为它很长。嗨,谢谢,但它写的对象名“query1”无效。和q1不能绑定。分号正确吗?和一起的会像那样重复吗?我希望CTE2是(…
而不是…);使用CTE2作为(…
)。