SQLでProject Euler − Problem 03

SQL Server では暗黙的なデータ変換の悪影響で下記SQLでは問題が解けません。
勝手なデータ型変換をやめさせる事が出来れば下記SQLでデータ型を全部 decimal(12,0) とかにすれば解けるかと思われます。
SQL Serverもまだまだだ。
個人的にはPostgreSQL最強と思えて仕方がありません!
(ただのPostgreSQL好きなだけかもしれませんが!)

/**
【問題】
13195 の素因数は 5、7、13、29 である。
600851475143 の素因数のうち最大のものを求めよ。
**/

WITH pf (prime,c,acm)
AS
(
	(SELECT 2, 0, 100)
UNION ALL
	SELECT
		(CASE WHEN prime <= acm AND acm%prime = 0
			THEN prime
			ELSE (CASE prime WHEN 2 THEN 3 ELSE prime + 2 END)
			END)
		, (CASE WHEN prime <= acm AND acm%prime = 0
			THEN c+1
			ELSE 0
			END)
		, (CASE WHEN prime <= acm AND acm%prime = 0
			THEN acm / prime
			ELSE acm
			END)
	FROM pf
	WHERE 1 < pf.acm
)
SELECT *
FROM pf m
WHERE
	1 <= m.c
	AND EXISTS (
		SELECT 1
		FROM pf s
		GROUP BY s.prime
		HAVING
			max(s.prime) = m.prime
			AND max(s.c) = m.c
	)
OPTION (MAXRECURSION 0)