Короткий ответ:
Нет.
Вы не можете динамически добавлять столбцы в свой запрос.
Помните, что SQL - это язык, основанный на наборе. Вы выполняете наборы запросов и объединяете множество.
То, что вы выкапываете, является рекурсивным списком и требует, чтобы список был нарисован горизонтально, а не вертикально.
Вы можете, сортировать, подделывать его, с помощью набора самостоятельных подключений, но для этого вам нужно знать все возможные разрешения, прежде чем писать запрос ... вот что предложили другие предложения.
Вы также можете вывести набор записей на другой язык, а затем перебрать его, чтобы создать соответствующие столбцы.
Что-то вроде:
SELECT Table_User.userID, userName, permissionid, rights
FROM Table_User
LEFT JOIN Table_UserPermissions ON Table_User.userID =Table_UserPermissions.userID
ORDER BY userName
Затем отобразите все разрешения для каждого пользователя, используя что-то вроде (Python):
userID = recordset[0][0]
userName = recordset[0][1]
for row in recordset:
if userID != row[0]:
printUserPermissions(username, user_permissions)
user_permissions = []
username = row[1]
userID = row[0]
user_permissions.append((row[2], row[3]))
printUserPermissions(username, user_permissions)