希望有人可以提供帮助。我有两个表:

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/

10-11 07:53