我需要在Pocet starych'之间返回一个比例。 (现有客户)a' Pocet novych' (特别是新客户)。 我想出了:
SELECT
Pomer = 1.0*
(SUM(CASE
(
SELECT
COUNT(KliRc)
FROM
dbo.Smlouvy
WHERE VyplacenaCastka > 0
GROUP BY
KliRC
HAVING
COUNT(KliRC) > 1 -- Pocet starych
) When 0 Then 1 Else 0 End )
/ SUM(CASE
(
SELECT
COUNT(KliRc)
FROM
dbo.Smlouvy
WHERE VyplacenaCastka > 0
GROUP BY
KliRC
HAVING
COUNT(KliRc) = 1 -- Pocet novych
) When 1 Then 1 Else 0 End ))
FROM
dbo.Smlouvy
WHERE
DATEPART(YYYY, DatumZadosti) = DATEPART(YYYY, GETDATE())
KliRC =个人识别号码
返回
无法对包含的表达式执行聚合函数 聚合或子查询。
块引用
任何帮助都会受到重视。 感谢。
答案 0 :(得分:0)
您的查询也包含逻辑中的错误,但我假设您要写这个:
WITH Grouped AS(
SELECT
Cnt = COUNT(KliRc)
FROM
dbo.Smlouvy
WHERE VyplacenaCastka > 0
GROUP BY
KliRC
)
SELECT 1.0 * SUM(CASE WHEN Cnt > 1 THEN 1 ELSE 0 END) / SUM(CASE WHEN Cnt = 1 THEN 1 ELSE 0 END)
FROM Grouped