각 경기에서 20 명 중 11 명 (위치에 따라)을 선택하는 테이블이 있습니다. 필자가 한 일은 PlayerID와 FixtureID를 테이블에 저장하는 'FixturePlayer'라는 새로운 테이블을 만든 것입니다.CTE에서 테이블에 삽입하는 방법
그러나 내가 이미 select를 호출 중이므로 'PlayerFixture'테이블에 pl.PlayerID와 pl.FixtureID를 어떻게 삽입 할 수 있는지 잘 모르겠습니다. 어떻게해야합니까?
WITH pl AS (SELECT DISTINCT p.PlayerID
,p.Position
,CASE WHEN p.TeamID = 0 THEN 0
ELSE p.playerWeighting END AS playerWeighting
,ABS(CHECKSUM(NewID())) % 10 + 1 AS Form
,t.TeamID
FROM dbo.Fixture f
INNER JOIN dbo.League l ON f.LeagueID = l.LeagueID
INNER JOIN dbo.Team t ON l.LeagueID = t.LeagueID
INNER JOIN dbo.Player p ON t.TeamID = p.TeamID
WHERE f.WeekNumber = 1)
,po AS (SELECT *, ROW_NUMBER() OVER(PARTITION BY pl.TeamID, pl.Position ORDER BY NEWID()) AS Rnk FROM pl)
,total AS (SELECT TeamID
,SUM(playerWeighting) AS TeamWeight
,SUM((playerWeighting/10) * Form + playerWeighting) AS FinalTeamWeight
FROM po
WHERE (po.Position = 'GK' and po.rnk = 1) OR
(po.Position = 'DF' and po.rnk <= 4) OR
(po.Position = 'MF' and po.rnk <= 4) OR
(po.Position = 'FW' and po.rnk <= 2)
GROUP BY po.TeamID
CREATE PROCEDURE [dbo].[MatchDay_Insert]
AS
SET NOCOUNT ON
BEGIN
SELECT [TeamID], [TeamWeight], [Form], [FinalTeamWeight]
FROM TeamWeighting
ORDER BY TeamID
select * from player
END
PlayerFixture :
CREATE TABLE [dbo].[PlayerFixture]
(
[FixtureID] INT NOT NULL PRIMARY KEY,
[PlayerID] INT NULL
)
PlayerFixture 테이블의 DDL과 위의 샘플 데이터를 기반으로 삽입 할 데이터를 제공하십시오. –
나는 질문을 바꾸어서 PlayerFixture 테이블 –