【发布时间】:2015-05-19 21:18:31
【问题描述】:
我正在尝试创建一个查询,该查询将从声明的变量中选择一个团队,然后通过为其余团队提供通用品牌和顺序 ID 来使其余团队“匿名”。
例如,如果我的数据集有 3 个不同的团队名称(ABC、DEF 和 GHI),但我只希望显示 1 个所选团队 (ABC) 的真实值。这是我正在使用的查询的框架:
SET @teamid = 123;
SELECT CASE WHEN ID = @teamid
THEN NAME
ELSE 'Team' + ' - ' + SEQ
END AS 'Team Name',
SUM(TOTAL) AS 'Team Total'
FROM TEAM
GROUP BY 1;
我希望结果看起来像这样:
Team Name: Team Total:
ABC 100
Team - 1 50
Team - 2 150
如何创建一个查询,该查询将创建一个可以替换原始团队名称的唯一编号?我知道我必须替换 case 语句的“SEQ”部分,但我不确定用什么来替换它。此外,无论是否匿名,每个团队都具有相同的 ID 很重要(因此,如果团队 DEF 有 50 行,则应仅显示为 Team - 1 而不是 Team - 1-50),以便我的分组将正常工作。
感谢您的帮助。
【问题讨论】:
-
@MattBusche 这是针对 SQL-Server,而不是 MySQL。
-
ROWNUM()...有趣,还没有考虑过使用它。这将有助于获得一个唯一的 ID,但我更希望能够提供一种更简化的方法。我可能可以制作一个临时表并重新加入 Team 表,并基本上改变我上面的 CASE 语句以使用 ROWNUM(),但无论如何要使用顺序类型的过程来消除该步骤。无论哪种方式,感谢您的回应。
-
@dupton MySQL 没有 ROWNUM。该答案适用于 SQL-Server,而不是 MySQL。
标签: mysql sequence case-statement nextval