小编jam*_*uss的帖子

从胜负平局数据中获取连胜次数和连胜类型

如果这对任何人来说都更容易,我为这个问题制作了一个SQL Fiddle

我有一个各种各样的梦幻体育数据库,我想弄清楚如何得出“当前的连胜”数据(例如,如果球队赢得了最近的两场比赛,则为“W2”,如果他们输了则为“L1”他们赢得上一场比赛后的最后一场比赛 - 如果他们最近的比赛打平,则为“T1”)。

这是我的基本架构:

CREATE TABLE FantasyTeams (
  team_id BIGINT NOT NULL
)

CREATE TABLE FantasyMatches(
    match_id BIGINT NOT NULL,
    home_fantasy_team_id BIGINT NOT NULL,
    away_fantasy_team_id BIGINT NOT NULL,
    fantasy_season_id BIGINT NOT NULL,
    fantasy_league_id BIGINT NOT NULL,
    fantasy_week_id BIGINT NOT NULL,
    winning_team_id BIGINT NULL
)
Run Code Online (Sandbox Code Playgroud)

的值NULLwinning_team_id列指示该匹配领带。

这是一个示例 DML 语句,其中包含 6 支球队和 3 周比赛的一些示例数据:

INSERT INTO FantasyTeams
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6 …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2012

15
推荐指数
3
解决办法
2703
查看次数

需要有关 SQL Server PIVOT 的帮助

我了解 SQL Server 中的 PIVOT 功能,并且在这里阅读了一些其他问题和答案,但我似乎无法掌握它来完成我需要的操作。我正在尝试进行一些计算,结果如下:

TABLE office_settings
column office_id (bigint not null)
column setting_value (NVARCHAR(500) NOT NULL)

office_id    setting_value
--------------------------------------------
4             0.2
4             0.2
4             2
4             3
5             0.2
5             0.2
5             2
5             3
Run Code Online (Sandbox Code Playgroud)

我想使用 PIVOT (假设这是适合该工作的工具)将其转换为这个,基本上是“按”office_id 列“分组”,所以:

office_id    value_1    value_2    value_3   value_4
------------------------------------------------------
    4         0.2         0.2         2         3
    5         0.2         0.2         2         3
Run Code Online (Sandbox Code Playgroud)

我还应该提到,在此过程中我需要将setting_value 列值转换为DECIMAL(4,2) - 以防这对完成它所需的T-SQL 有任何影响。

有任何想法吗?

sql-server pivot

5
推荐指数
1
解决办法
2125
查看次数

标签 统计

sql-server ×2

pivot ×1

sql-server-2012 ×1

t-sql ×1