希望有人可以提供帮助。我有两个表:
Users
-UserID
-UserName
UsersType
-UserTypeID
-UserID
UsersTypeID 的可能值是 1 到 6。在这种情况下,用户可能有多种类型,我需要为每个用户检索一个不同的行,其中包含下面描述的列。
UserName - Type1 - Type2 - Type3 - Type4
Joe 0 1 1 0
在这个场景中,Joe 有两种不同的用户类型 (2,3)
这可能很简单,但我一直在解决这个问题,以至于我一无所知。有人可以帮忙吗?
最佳答案
这是一个标准的交叉表输出,你应该可以用谷歌搜索。虽然在 SQL 中不推荐,但您可以执行以下操作:
Select Users.Username
, Max( Case When UsersType.UserTypeId = 1 Then 1 Else 0 End ) As Type1
, Max( Case When UsersType.UserTypeId = 2 Then 1 Else 0 End ) As Type2
, Max( Case When UsersType.UserTypeId = 3 Then 1 Else 0 End ) As Type3
, Max( Case When UsersType.UserTypeId = 4 Then 1 Else 0 End ) As Type4
From Users
Join UsersType
On UsersType.UserId = Users.UserId
Group By Users.UserName
(更新为 Max 而不是 Min)
关于sql - 多次选择同一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2410066/