Поскольку вы спросили, можете ли вы сделать это в одном утверждении, вот ответ на этот вопрос.Я не могу помочь, но чувствую, что если бы вы дали больше информации, я бы сказал, что то, ради чего вы это делаете, должно решаться по-другому.Мне трудно найти хорошую причину для этого.Вот способ сделать это независимо от этого:
Я предполагаю, что у Table1 есть Id, ParentId и Name, а у Table2 есть Id и Name (вы сказали, что у вас есть имена Foo, Bar, что угодно из Table2),Я также предполагаю, что есть какой-то порядок, который вы можете навязать.
CREATE TABLE #T
(
Id INT IDENTITY(1, 1)
, ParentId INT
, Name VARCHAR(100)
)
CREATE TABLE #T2
(
Id INT IDENTITY(1, 1)
, Name VARCHAR(100)
)
INSERT #T2
(
Name
)
VALUES ('Foo'), ('Bar')
INSERT #T
(
ParentId
, Name
)
SELECT
NULLIF(IDENT_CURRENT('#T')
+ ROW_NUMBER() OVER(ORDER BY T2.Name)
- 2, (SELECT ISNULL(MIN(Id), 1) - 1 FROM #T))
, T2.Name
FROM #T2 T2
SELECT * FROM #T
DROP TABLE #T
DROP TABLE #T2