在下面,
SQL Server当您使用分组功能来生成聚合函数时,您将看到正确的语法。
你的WHERe UserID = U.Id
,因为你正在为它的一部分是没有必要的INNER JOIN
条款。
因此,请尝试以下操作:
SELECt DISTINCT U.FB_UserId , U.Id AS GameUserID , U.FbLocale , U.FbGender , U.FbBirthday , U.RegistredAt , U.LoginCount , U.PlayCount , U.MarketGroupId , COUNT(*) AS Payments , SUM(CASE WHEN C.PriceFbCredits = 13 THEN 1 ELSE 0 END) AS P13 , SUM(CASE WHEN C.PriceFbCredits = 52 THEN 1 ELSE 0 END) AS P52 , SUM(CASE WHEN C.PriceFbCredits = 130 THEN 1 ELSE 0 END) AS P130FROM [dbo].[User] AS U WITH (NOLOCK) INNER JOIN [dbo].[FbCreditsCallback] AS C WITH (NOLOCK) ON C.UserId = U.IdGROUP BY U.FB_UserId , U.Id , U.FbLocale , U.FbGender , U.FbBirthday , U.RegistredAt , U.LoginCount , U.PlayCount , U.MarketGroupId
如你所写
我不是SQL专家
从现在开始,避免使用WITH(NOLOCK),就像您询问
SELECt [data] FROM [TABLE] WITH(I really, reallydon't care if it is accurate or not)
在某些情况下有这样做的理由,但是如果您是初学者,
SQL我会怀疑您是否处于这种情况。



