powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом
3 сообщений из 3, страница 1 из 1
Помогите с запросом
    #39679906
tgrba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в базе записаны сотрудники и ключи
у сотрудника может быть два ключа, ключи лежат в отдельной таблице
не могу вывести в отчет как ключ1 и ключ2
структура (картинка)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
  Employee.FirstName
 ,Employee.LastName
 ,AdditionalFieldStringValues.Value
 ,EmployeeGroup.Name
 ,Employee.SecondName
 ,AcsKey2EmployeeAssignment.AcsKeyId
FROM dbo.AdditionalFieldStringValues
INNER JOIN dbo.Employee
  ON AdditionalFieldStringValues.EmployeeId = Employee._id
INNER JOIN dbo.EmployeeGroup
  ON Employee.EmployeeGroupID = EmployeeGroup._id
INNER JOIN dbo.AcsKey2EmployeeAssignment
  ON AcsKey2EmployeeAssignment.EmployeeId = Employee._id
WHERE Employee.IsRemoved = 0
AND AcsKey2EmployeeAssignment.AssignmentModificationType = 0


Сейчас выводится так


Хотелось бы так


Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите с запросом
    #39679917
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT
  Employee.FirstName
 ,Employee.LastName
 ,AdditionalFieldStringValues.Value
 ,EmployeeGroup.Name
 ,Employee.SecondName
 ,min(case when k.rn = 1 then k.AcsKeyId end) as AcsKeyId1
 ,min(case when k.rn = 2 then k.AcsKeyId end) as AcsKeyId2
FROM dbo.AdditionalFieldStringValues
INNER JOIN dbo.Employee
  ON AdditionalFieldStringValues.EmployeeId = Employee._id
INNER JOIN dbo.EmployeeGroup
  ON Employee.EmployeeGroupID = EmployeeGroup._id
outer apply (select top (2) AcsKeyId, row_number() over (order by (select 1)) from dbo.AcsKey2EmployeeAssignment where EmployeeId = Employee._id and AssignmentModificationType = 0) k(AcsKeyId, rn)
WHERE Employee.IsRemoved = 0
group by
  Employee.FirstName
 ,Employee.LastName
 ,AdditionalFieldStringValues.Value
 ,EmployeeGroup.Name
 ,Employee.SecondName


Вариант 2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
  Employee.FirstName
 ,Employee.LastName
 ,AdditionalFieldStringValues.Value
 ,EmployeeGroup.Name
 ,Employee.SecondName
 ,k1.AcsKeyId1
 ,k2.AcsKeyId2
FROM dbo.AdditionalFieldStringValues
INNER JOIN dbo.Employee
  ON AdditionalFieldStringValues.EmployeeId = Employee._id
INNER JOIN dbo.EmployeeGroup
  ON Employee.EmployeeGroupID = EmployeeGroup._id
outer apply (select top (1) AcsKeyId from dbo.AcsKey2EmployeeAssignment where EmployeeId = Employee._id and AssignmentModificationType = 0) k1(AcsKeyId1)
outer apply (select top (1) AcsKeyId from dbo.AcsKey2EmployeeAssignment where EmployeeId = Employee._id and AssignmentModificationType = 0 and AcsKeyId <> k1.AcsKeyId1) k2(AcsKeyId2)
WHERE Employee.IsRemoved = 0


Вариант 3
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
  Employee.FirstName
 ,Employee.LastName
 ,AdditionalFieldStringValues.Value
 ,EmployeeGroup.Name
 ,Employee.SecondName
 ,k.x.value('key[1]/@AcsKeyId', 'int') as AcsKeyId1
 ,k.x.value('key[2]/@AcsKeyId', 'int') as AcsKeyId2
FROM dbo.AdditionalFieldStringValues
INNER JOIN dbo.Employee
  ON AdditionalFieldStringValues.EmployeeId = Employee._id
INNER JOIN dbo.EmployeeGroup
  ON Employee.EmployeeGroupID = EmployeeGroup._id
outer apply (select top (2) AcsKeyId as [@AcsKeyId] from dbo.AcsKey2EmployeeAssignment where EmployeeId = Employee._id and AssignmentModificationType = 0 for xml path('key'), type) k(x)
WHERE Employee.IsRemoved = 0
...
Рейтинг: 0 / 0
Помогите с запросом
    #39679923
tgrba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо!!!

можно прикрыть тему
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]