我想创建一个基于来自其他几列的信息计算的列,这对我来说很难作为SQL的新人。下面是我尝试使用的代码,但它对“Sum(SlotActual + TableActual)As Actual”这一行感到愤怒。我猜这是由于这些是别名。我想我需要使用子查询,但我不确定,因为我以前没有这样做过。如果可能的话,我宁愿不要显示SlotActual或TableActual,我只需要计算这些,然后添加它们以获得实际值。这是在SQL 2008中完成的。请让我知道我是否遗漏了您需要的任何信息。复杂的添加问题
我越来越Select Ltrim(Rtrim(P.Player_ID)) as "Player ID",
Ltrim(Rtrim(P.FirstName)) as "First Name",
Ltrim(Rtrim(P.LastName)) as "Last Name",
Sum(CashIn) as "Cash In",
Sum(CashOut) as "Cash Out",
Sum(Jackpot) as "Jackpot",
Sum(case when S.StatType = 'Slot' then S.CashIn - S.CashOut - S.JackPot end) as SlotActual,
Sum(case when S.StatType = 'Pit' then S.CashIn + S.ChipsIn + S.FrontIn + S.CreditIn - S.CashOut end) as TableActual,
Sum(SlotActual + TableActual) As Actual
From dbo.CDS_PLAYER as P
Join dbo.CDS_ACCOUNT as A
On P.Player_ID = A.Primary_ID
Join dbo.CDS_STATDAY as S
On P.Player_ID = S.Meta_ID
Where S.GamingDate Between '09/15/2014 12:00:00 AM' and '09/21/2014 11:59:59 PM'
And P.EntryDate Between '09/15/2014 12:00:00 AM' and '09/21/2014 11:59:59 PM'
And S.IDType = 'P'
Group by Ltrim(Rtrim(P.Player_ID)) ,
Ltrim(Rtrim(P.FirstName)),
Ltrim(Rtrim(P.LastName))
错误信息如下:
消息207,级别16,状态3,行3 无效的列名称SlotActual“。 消息207,级别16,状态3,行3 无效的列名称'TableActual'。
请张贴错误的SQL是给你的。 – 2014-09-26 17:58:31
您不能在集合函数中使用别名。 sql服务器不支持这个。尝试把你的整个公式扔在总和中。 – paqogomez 2014-09-26 18:02:22