Может кто-нибудь помочь мне конвертировать Access Query в MS SQL Query - PullRequest
1 голос
/ 21 июня 2011

Привет, у меня есть запрос на доступ. Может ли кто-нибудь помочь мне, пожалуйста, преобразовать запрос в MS SQL 2008 Query.Запрос доступа:

TRANSFORM Count(vwg_vkCustomers.CustomerNo) AS CountOfCustomerNo
SELECT vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode
FROM vwg_vkCustomers
WHERE (((vwg_vkCustomers.TutorCode)="123456") AND ((vwg_vkCustomers.CustomerAdded)>#6/21/2011#))
GROUP BY vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode
PIVOT vwg_vkCustomers.Type;

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Объедините это с ответом TimD, поскольку я не спорю TRANSFORM очень часто ....

Для Iif, используйте CASE:

...
CASE vwg_vkCustomers.Type
WHEN 'Whatever' 1
ELSE 0
END,
...

Примечаниечто вы используете одинарные кавычки вместо двойных.

2 голосов
/ 21 июня 2011

Я не знаю версию IIF для T-SQL, но это Access-версия кросс-таблицы, которая не использует TRANSFORM / PIVOT.Повторите выражение IIF для каждого нужного столбца:

SELECT vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode,
Sum(IIF(vwg_vkCustomers.Type="Whatever",1,0) AS TypeWhatever 
FROM vwg_vkCustomers
WHERE (((vwg_vkCustomers.TutorCode)="123456") AND ((vwg_vkCustomers.CustomerAdded)>#6/21/2011#))
GROUP BY vwg_vkCustomers.ClassID, vwg_vkCustomers.SubjectTypeID, vwg_vkCustomers.TutorCode
...