Я сложил два запроса, так как мне нужна одна таблица результатов.
У меня сложный первый запрос с таблицей cte и некоторыми функциями, который дает мне результат в одну строку, например:
SELECT TOP 1 Result1, Result2, Result3
FROM someTable
INNER JOIN antoherTable ...
WHERE ...
ORDER BY...
Таблица результатов:
Result1,Result2,Result3
1,2,3
В той же процедуре у меня есть второе предложение SELECT, подобное этому:
SELECT Col1, Col2, Col3, Result
FROM tbl1
INNER JOIN tbl2 ..
WHERE ...
ORDER BY..
Result table:
Col1, Col2, Col3, Result
aa,bb,cc,5
aa,bb,cc,0
aa,bb,cc,2
aa,bb,cc,1
Каким-то образом мне нужно пометить строки, которые приводят к результатам первого запроса (в этом примере последние две строки).
Я использую SQL Server 2005. Я попытался добавить дополнительный столбец с именем «Помечено» со значениями 0/1 и поместить весь первый запрос в функцию CASE WHEN.
Это выглядит так:
SELECT Col1, Col2, Col3, Result,
CASE WHEN Result IN (SELECT TOP 1 Result1, Result2, Result3 ....)
FROM tbl1
INNER JOIN tbl2 ..
WHERE ...
ORDER BY..
Но это дает мне ошибку:
В списке выбора можно указать только одно выражение, если подзапрос не введен с EXISTS
Это работает, только если я использую один столбец, только Result1, как это:
CASE WHEN Result IN (SELECT TOP 1 Result1 ....)
Я нашел какой-то поток с этим сообщением об ошибке, и я попробовал также функцию EXISTS, но безуспешно.
Заранее спасибо, и извините за любительский вопрос.