Я пытаюсь выполнить следующий запрос, чтобы проверить записи из 4 таблиц, а затем вызвать функцию, но я получаю сообщение об ошибке рядом с скобками. Он работает нормально, если я использую случай, но выходит, когда выполняется первое условие. Мне нужно, чтобы оценить для всех таблиц в 4 ИФ:если существует в sql в подзапросе
select account_id,
(
if exists (select account_id from [dbo].[TEST_R6])
Begin
select dbo.make_indicator(cent,chem,co,dim,lg,pl,strs,vis) + space(1) + 'rr'
End
if exists (select account_id from tbl_noR6)
begin
select dbo.make_indicator(acent,chem,co,dim,lg,pl,str,vis) + space(2) + 'cc'
end
if exists (select account_id from tbl_acct)
begin
select dbo.make_indicator(cent,chem,co,dim,lg,pl,str,vis) + space(3) + 'pp'
end
if exists (select account_id from test_con)
begin
select dbo.make_indicator(cent,chem,co,dim,lg,pl,str,vis) + space(4) + 'no'
end
)as value from CRS_PRODLINE
код работает частично с сазом и дает выход только в первом случае удовлетворяются и не проверяет остальное:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.A_NAME)
FROM TEST_DEL c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @query = 'SELECT account_id, ' + @cols + ' from
(select account_id,
(case
when exists (select account_id from [dbo].[TEST_R6])
then
dbo.make_indicator(acent,chem,co,dim,lg,pl,str,vis) + space(1)
when exists (select account_id from tbl_noR6)
then
dbo.make_indicator(acent,chem,co,dim,lg,pl,str,vis) + space(2)
when exists (select account_id from tbl_acct)
then
dbo.make_indicator(acent,chem,co,dim,lg,pl,str,vis) + space(2)
end) as value,
assay_name
from CRS_PRODLINE
) x
pivot
(
MAX(newvalue)
for a_name in (' + @cols + ')
) p '
execute(@query)
Запрос, написанный выше, неверен. не могли бы вы предоставить свой usecase то, что именно вы хотите достичь. дайте пример –
Эта помощь помогает, это уже часть динамического запроса, где я для поворота данных, полученных из этих таблиц. Мне действительно нужно просто вызвать функцию с указанными пространствами в зависимости от таблиц, в которых она присутствует. Например, если учетная запись присутствует в 1-й таблице, тогда функция должна вывести свой вывод с 1 пробелом, если во 2-й таблице с 2 пространства и так далее! Я добавляю код, который частично работает с оператором case, но, как и в случае с sql select, он выпадает, как только выполняется первое условие! –