Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20970 |
Есть простая конструкция (схематично):SELECT id FROM table CROSS APPLY STRING_SPLIT(@param1, ',') CROSS APPLY STRING_SPLIT(@param2, ',') WHERE ... Само собой, использовать такое невозможно - оба STRING_SPLIT производят одноколоночный rowset, причём поле в обоих имеет имя value, и фиг сошлёшься, ибо нет алиаса таблицы. Та же проблема, если вместо CROSS APPLY использовать любой JOIN. Вроде чего проще - дай алиас, типа CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(value) Ан нет - немедленно получаешь сообщение, что функция STRING_SPLIT не определена. Понятно, что задача элементарно решается какой-нибудь конструкцией типа SELECT id FROM table CROSS APPLY (SELECT value FROM STRING_SPLIT(@param1, ',')) AS param1(value) CROSS APPLY (SELECT value FROM STRING_SPLIT(@param2, ',')) AS param2(value) WHERE ... или то же в CTE - но как бы "на глаз" явно избыточный подзапрос. Вопрос: можно ли заалиасить без подзапроса? если да - как именно? |
5 сен 19, 11:49 [21964379] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9644 |
CROSS APPLY STRING_SPLIT(@param1, ',') AS param1 |
5 сен 19, 11:56 [21964387] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9644 |
Когда можно указывать алиасы столбцов описано в документации - https://docs.microsoft.com/ru-ru/sql/t-sql/queries/from-transact-sql?view=sql-server-2017 |
5 сен 19, 12:06 [21964394] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Akina,
|
||
5 сен 19, 12:07 [21964396] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
ну разворачивает в тоже самое |
||
5 сен 19, 12:13 [21964403] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20970 |
Гм... доупрощался, называется. На самом деле основное-то, что хотелось и что я напрасно опустил - это конечное желание переименовать само поле. Т.е. получить не аналог CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(value)а аналог CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(param1)решаемый конструкцией CROSS APPLY (SELECT value FROM STRING_SPLIT(@param1, ',')) AS param1(param1) |
5 сен 19, 13:09 [21964477] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |