Nie sprawdzałem tego z PDO, bo nie mam pod ręką serwera z aktywnym PDO. Ale wyrażenie jest, zgodnie z Twoimi oczekiwaniami, poprawne. Działa z poziomu C# i z poziomu management console. Problemem wydaje się być to, że niektóre moduły PHP (np. mysql) nie pozwalają na więcej niż jedno zapytanie w ramach jednego wywołania *_query. Prawdopodobnie o to samo się rozbijasz. Użyj SP, żeby obejść to ograniczenie.
To to że jest poprawne wiem bo działa w SQLManagmentStudio Pytanie tylko jak obejść to w PHP z PDO, bo co prawda w standardowym mssql_query też jest Ok ale trochę zależy mi na PDO tym bardziej że podobnych zapytań będzie prawdopodobnie więcej.
Napisz procedurę składowaną i wywołuj ją. W niej umieszczasz tyle podzapytań, ile dusza zapragnie (no ok, w granicach rozsądku) i z *_query wywołujesz SP przy pomocy exec. Ma to oczywiście wady (aktualizacja kodu i SP w sposób zsynchronizowany jest lekko uciążliwa), ale zalety (m.in. prędkość działania) je IMO rekompensują.
to chyba odpada, tak jak pisałem wyżej będę miał trochę takich zapytań i po jakimś czasie ogarniecie tego to będzie nie lada wyczyn, pozostaje chyba tylko transakcja SQL w postaci zapytanie SQL ->wynik do tablicy w PHP -> zapytanie SQL z danymi z tablicy.
Cały DP jest na SP. Da się, to nie jest wcale aż takie straszne. Jestem wręcz zdania, że wplatanie zapytań SQL w normalny kod jest wątpliwym rozwiązaniem.