#sql #sql-server #sql-server-2005 #tsql #permutation
#sql #sql-сервер #sql-server-2005 #tsql #перестановка
Вопрос:
У меня есть следующие входные данные
PlayerID MatchPlayed RunsMade
-------- ----------- --------
1 10 200
2 5 100
3 8 24
4 30 50
Результатом будет
Combined Players Combined Match Played Combined runs Made
---------------- --------------------- ------------------
1 10 200
1,2 15 300
1,3 18 224
1,4 40 250
1,2,3 23 324
1,2,4 45 350
1,3,4 48 274
1,2,3,4 53 374
2 5 100
2,3 13 124
2,4 35 150
2,3,4 43 174
3 8 24
3,4 38 74
4 30 50
В сочетании матч столбца равно сумме значений матч колонна из тех игроков. например, для совместных играл в 1,2 в сочетании матче значение равно 10 5 = 15.
аналогично, выполненные комбинированные пробеги представляют собой сумму столбцов Выполненных пробегов отдельных игроков. например, для того же примера столбец выполненных комбинированных пробегов равен 200 100 = 300.
Спасибо
Комментарии:
1. Хотя я уверен, что это можно сделать в T-SQL, я бы посоветовал выполнить перестановку на другом языке, например VB.Net / C # / C и т.д. Запрос, который потребовался бы для генерации этого вывода, вероятно, будет сложным и вполне может усложниться по мере привлечения большего числа игроков.
2. Это правильно, но вряд ли есть какой-либо выбор
Ответ №1:
Настройка:
create table Input(PlayerId int, MatchPlayed int, RunsMade int)
insert Input
select 1, 10, 200
union all select 2, 5, 100
union all select 3, 8, 24
union all select 4, 30, 50
Запрос:
with cte(Combined, PlayerId, MatchPlayed, RunsMade)
as
(
select cast(PlayerId as varchar(500)), PlayerId, MatchPlayed, RunsMade
from Input
union all
select cast(cte.Combined ',' cast(inp.PlayerId as varchar) as varchar(500)), inp.PlayerId, inp.MatchPlayed cte.MatchPlayed, inp.RunsMade cte.RunsMade
from cte
join Input inp on
cte.PlayerId < inp.PlayerId
)
select Combined, MatchPlayed, RunsMade
from cte
order by Combined
Комментарии:
1. можете ли вы прислать какой-нибудь пример руководства по значению combined. Извините, не понимаю, как здесь используется CTE.combined.