[英]Need help with “Incorrect syntax near keyword GROUP”
我不知道我在做什么错。 我不断收到不正确的语法错误,好像我纠正了一个,然后弹出了下一行。 现在,我在关键字GROUP上收到“语法不正确。在此网站上,我有几个版本的问题。到目前为止,我非常感谢您的帮助。我只需要进行一些改进即可使此报告生效。任何人都知道明尼苏达州sql的良好类。这些书涵盖了基础知识,我需要复杂的sql类。
SELECT fgc, sum(Totpay) as Totpay, Sum(TotChg) as TotChg
from
(
SELECT fgc, sum(pay) as TotPay, 0 as TotChg
from
(
SELECT fgc, pay,
CASE
WHEN [date]<= 30 THEN 'pmt 0-30'
WHEN [date]> 30 AND [date] <= 60 THEN 'pmt 30-60'
WHEN [date]> 61 AND [date] <= 90 THEN 'pmt 61-90'
WHEN [date]> 91 AND [date] <= 120 THEN 'pmt 91-120'
WHEN [date]> 121 AND [date] <= 150 THEN 'pmt 121-150'
WHEN [date]> 151 AND [date] <= 180 THEN 'pmt 151-180'
ELSE 'pmt 181+'
END
FROM @Pay
GROUP BY fgc
UNION
SELECT fgc, 0 as TotPay, sum(chg) as TotChg
from
(
SELECT fgc, chg,
CASE
WHEN [date]<= 30 THEN 'charge 0-30'
WHEN [date]> 30 AND [date] <= 60 THEN 'charge 30-60'
WHEN [date]> 61 AND [date] <= 90 THEN 'charge 61-90'
WHEN [date]> 91 AND [date] <= 120 THEN 'charge 91-120'
WHEN [date]> 121 AND [date] <= 150 THEN 'charge 121-150'
WHEN [date]> 151 AND [date] <= 180 THEN 'charge 151-180'
ELSE 'charge 181+'
END
FROM @Chg
)
GROUP BY fgc
)
GROUP BY fgc
您没有将别名用于内联查询。 以下没有给我任何语法错误。
SELECT fgc, sum(Totpay) as Totpay, Sum(TotChg) as TotChg
from
(
SELECT fgc, sum(pay) as TotPay, 0 as TotChg
from
(SELECT fgc, pay,
CASE
WHEN [date]<= 30 THEN 'pmt 0-30'
WHEN [date]> 30 AND [date] <= 60 THEN 'pmt 30-60'
WHEN [date]> 61 AND [date] <= 90 THEN 'pmt 61-90'
WHEN [date]> 91 AND [date] <= 120 THEN 'pmt 91-120'
WHEN [date]> 121 AND [date] <= 150 THEN 'pmt 121-150'
WHEN [date]> 151 AND [date] <= 180 THEN 'pmt 151-180'
ELSE 'pmt 181+'
END
FROM @Pay
GROUP BY fgc
UNION
SELECT fgc, 0 as TotPay, sum(chg) as TotChg
from
(SELECT fgc, chg,
CASE
WHEN [date]<= 30 THEN 'charge 0-30'
WHEN [date]> 30 AND [date] <= 60 THEN 'charge 30-60'
WHEN [date]> 61 AND [date] <= 90 THEN 'charge 61-90'
WHEN [date]> 91 AND [date] <= 120 THEN 'charge 91-120'
WHEN [date]> 121 AND [date] <= 150 THEN 'charge 121-150'
WHEN [date]> 151 AND [date] <= 180 THEN 'charge 151-180'
ELSE 'charge 181+'
END
FROM @Chg) as innerTable2
GROUP BY fgc
) As innertable1
GROUP BY fgc
) as outerTable
基本上,在使用聚合函数的情况下使用GROUP BY关键字,并且要使用它,必须在不使用聚合函数的情况下对所有列进行分组。
例如:代替GROUP BY fgc,应使用GROUP BY(fgc,pay,aliasName)。
更改:
SELECT fgc,付款,当[date] <= 30 THEN'pmt 0-30'时
当[日期]> 30 AND [日期] <= 60则'pmt 30-60'当[日期]> 61 AND [日期] <= 90则[日期]> 91 AND [日期] <= 120 THEN'pmt 91-120'when [date]> 121 and [date] <= 150 THEN'pmt 121-150'when [date]> 151 AND [date] <= 180 THEN'pmt 151-180' ELSE'pmt 181+'结束于@Pay GROUP BY fgc
进入
SELECT fgc,付款,当[date] <= 30 THEN'pmt 0-30'时
当[日期]> 30 AND [日期] <= 60则'pmt 30-60'当[日期]> 61 AND [日期] <= 90则[日期]> 91 AND [日期] <= 120 THEN'pmt 91-120'when [date]> 121 and [date] <= 150 THEN'pmt 121-150'when [date]> 151 AND [date] <= 180 THEN'pmt 151-180' ELSE'pmt 181+'END作为别名,来自@Pay GROUP BY(fgc,pay,别名)
希望能有所帮助。
P / S:tks Gabe纠正了我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.