计算列 - SQL - 足球队
Calculated column - SQL - Football Teams
我想在代表英超(英国)足球排名的 'teams' table 中添加新的第二列。目前 table 仅包含每个足球队的名称。
该栏将被命名为 'Played',它将列出每支球队参加的比赛次数。我想从一个名为 'games' 的单独 table 计算这个数字(整数数据类型),它记录了游戏装置的历史日志。这可能包括使用 SQL 的原生 'COUNT' 函数。
我曾尝试使用函数来帮助我执行此操作,但目前它正在将所有值插入为“0”
CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR)
RETURNS INT
BEGIN
RETURN(SELECT COUNT(*)
FROM games
WHERE games.Home = @Team OR games.Away = @Team);
END;
ALTER TABLE teams
ADD Played AS GetPlayed(teams.Team)
tables:
团队:
```Team
Arsenal
Bournemouth
Burnley
Chelsea
Crystal Palace
Everton
Hull City
Leicester City
Liverpool
Manchester City
Manchester United
Middlesbrough
Southampton
Stoke City
Sunderland
Swansea City
Tottenham Hotspur
Wat"For"d
West Bromwich Albion
West Ham United
```
游戏:
gameID Home HomeScore Away AwayScore GameDate
4 Arsenal 2 Chelsea 0 2018-05-26
5 Arsenal 5 Bournemouth 0 2018-04-22
6 Arsenal 1 Leicester City 1 2018-03-15
7 Bournemouth 5 Liverpool 0 2018-04-22
8 Burnley 5 Bournemouth 0 2018-04-22
9 Burnley 1 Swansea City 2 2017-11-22
10 Stoke City 0 Burnley 0 2018-01-08
11 Chelsea 1 Middlesborough 2 2017-11-22
12 Southampton 0 Chelsea 0 2018-01-01
13 Crystal Palace 1 Everton 2 2018-03-26
14 Manchester United 4 Crystal Palace 0 2018-06-01
15 Crystal Palace 0 Southampton 1 2018-04-16
16 Everton 1 Hull City 2 2017-11-20
17 Manchester City 4 Everton 0 2017-11-20
18 Hull City 0 Burnley 0 2018-06-01
19 Sunderland 2 Hull City 0 2018-06-15
20 Leicester City 3 Tottenham Hotspur 1 2017-09-20
21 Swansea City 2 Leicester City 5 2018-02-15
22 Sunderland 0 Leicester City 1 2018-01-29
23 Liverpool 3 Tottenham Hotspur 0 2018-02-28
24 Stoke City 1 Liverpool 2 2017-09-19
25 Manchester City 2 Manchester United 4 2018-05-02
26 Middlesborough 1 Southampton 1 2018-02-08
27 Stoke City 2 Middlesborough 2 2017-08-19
28 Swansea City 0 Manchester United 5 2018-06-27
29 Sunderland 1 Tottenham Hotspur 2 2017-09-01
如有任何帮助,我们将不胜感激!
谢谢,罗布
没有大小的 VARCHAR 默认为 1 个字符,您需要更改函数声明
CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR(32))
.....
如果没有大小,你的参数 @Team 将只收到你传递的团队值的第一个字母,当然,WHERE 语句无法在你的游戏中找到任何结果 table
我想在代表英超(英国)足球排名的 'teams' table 中添加新的第二列。目前 table 仅包含每个足球队的名称。
该栏将被命名为 'Played',它将列出每支球队参加的比赛次数。我想从一个名为 'games' 的单独 table 计算这个数字(整数数据类型),它记录了游戏装置的历史日志。这可能包括使用 SQL 的原生 'COUNT' 函数。
我曾尝试使用函数来帮助我执行此操作,但目前它正在将所有值插入为“0”
CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR)
RETURNS INT
BEGIN
RETURN(SELECT COUNT(*)
FROM games
WHERE games.Home = @Team OR games.Away = @Team);
END;
ALTER TABLE teams
ADD Played AS GetPlayed(teams.Team)
tables:
团队:
```Team
Arsenal
Bournemouth
Burnley
Chelsea
Crystal Palace
Everton
Hull City
Leicester City
Liverpool
Manchester City
Manchester United
Middlesbrough
Southampton
Stoke City
Sunderland
Swansea City
Tottenham Hotspur
Wat"For"d
West Bromwich Albion
West Ham United
```
游戏:
gameID Home HomeScore Away AwayScore GameDate
4 Arsenal 2 Chelsea 0 2018-05-26
5 Arsenal 5 Bournemouth 0 2018-04-22
6 Arsenal 1 Leicester City 1 2018-03-15
7 Bournemouth 5 Liverpool 0 2018-04-22
8 Burnley 5 Bournemouth 0 2018-04-22
9 Burnley 1 Swansea City 2 2017-11-22
10 Stoke City 0 Burnley 0 2018-01-08
11 Chelsea 1 Middlesborough 2 2017-11-22
12 Southampton 0 Chelsea 0 2018-01-01
13 Crystal Palace 1 Everton 2 2018-03-26
14 Manchester United 4 Crystal Palace 0 2018-06-01
15 Crystal Palace 0 Southampton 1 2018-04-16
16 Everton 1 Hull City 2 2017-11-20
17 Manchester City 4 Everton 0 2017-11-20
18 Hull City 0 Burnley 0 2018-06-01
19 Sunderland 2 Hull City 0 2018-06-15
20 Leicester City 3 Tottenham Hotspur 1 2017-09-20
21 Swansea City 2 Leicester City 5 2018-02-15
22 Sunderland 0 Leicester City 1 2018-01-29
23 Liverpool 3 Tottenham Hotspur 0 2018-02-28
24 Stoke City 1 Liverpool 2 2017-09-19
25 Manchester City 2 Manchester United 4 2018-05-02
26 Middlesborough 1 Southampton 1 2018-02-08
27 Stoke City 2 Middlesborough 2 2017-08-19
28 Swansea City 0 Manchester United 5 2018-06-27
29 Sunderland 1 Tottenham Hotspur 2 2017-09-01
如有任何帮助,我们将不胜感激!
谢谢,罗布
没有大小的 VARCHAR 默认为 1 个字符,您需要更改函数声明
CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR(32))
.....
如果没有大小,你的参数 @Team 将只收到你传递的团队值的第一个字母,当然,WHERE 语句无法在你的游戏中找到任何结果 table