First set up some sample data (it would help in the future if you provide a populated temp table for sample data):
/* THIS IS JUST FOR GENERATING SAMPLE SOURCE DATA */
IF OBJECT_ID('tempdb..#TestData') IS NOT NULL
DROP TABLE #TestData
;WITH sampledata AS
(
SELECT * FROM
(VALUES
(1,0.15,1,9),
(1,0.05,2,8),
(2,0.05,1,7),
(3,0.05,1,7),
(3,0.10,2,9),
(3,0.25,3,6)
) DATA (ValueA,ValueB,ValueC,ValueX))
SELECT
IDENTITY(INT,1,1) AS ID
,ValueA
,ValueB
,ValueC
,ValueX
INTO
#TestData
FROM
sampledata
SELECT * FROM #TestData
/* END SOURCE DATA */
Now to do what you want in a single statement without using dynamic SQL I had to let ValueC ride the coattails of the first insert so I needed to add ValueC to TableA. You need to get the value into TableB somehow and this was the easiest method I could think of. The other option would just be two individual insert statements.
IF OBJECT_ID('tempdb..#TestTableAlpha') IS NOT NULL
DROP TABLE #TestTableAlpha
IF OBJECT_ID('tempdb..#TestTableBravo') IS NOT NULL
DROP TABLE #TestTableBravo
CREATE TABLE #TestTableAlpha (
[ID] INT IDENTITY(100,1) NOT NULL, --100 so we can see the result easier
[ColA] INT NULL,
[ColB] DECIMAL(5,2) NULL,
[ColC] INT NULL,
[ColX] INT NULL,
PRIMARY KEY (ID))
CREATE TABLE #TestTableBravo (
[ID] INT IDENTITY(1,1) NOT NULL,
[ColA] INT NULL,
[ColB] DECIMAL(5,2) NULL,
[ColC] INT NULL,
PRIMARY KEY (ID))
INSERT INTO #TestTableAlpha
(ColA,ColB,ColC,ColX)
OUTPUT
INSERTED.ID AS ColA,
INSERTED.ColB,
INSERTED.ColC
INTO #TestTableBravo
SELECT
ValueA,
ValueB,
ValueC,
ValueX
FROM #TestData
SELECT * FROM #TestTableAlpha
SELECT * FROM #TestTableBravo