Column name or number of supplied values doesn not match table definition
dbo.ADGroups requieres 3 columns/values:


GroupID int NOT NULL PRIMARY KEY,
ADUserID int NOT NULL,
ADGroup varchar (200)


But your query only selects 2 values:


@ID
ADGroup


And SQL Server does not know which one is missing and what to do with the other 2.

You can add a third value for GroupId but it is a lot better to add the column names you are using after the table name when you insert something into a table:

INSERT INTO dbo.ADGroups(ADUserID, ADGroup)
SELECT @ID, ADGroup
FROM UserADGroups
WHERE ADGroup IS NOT NULL


You should always use this syntax with a list of column name: insert into table(colA, colB, ...). It will allow SQL Server to know which value belongs to which column. 

Since GroupId cannot be null, it will fail as well. You then have 2 option:


Supply a valid GroupId value
Use Identity GroupID int identity(0, 1) NOT NULL PRIMARY KEY