0

私はMicrosoftSQLServer 2008 R2を使用してクエリを実行しようとしており、ポイントの合計を間隔でグループ化しています。しかし、これを機能させることはできません。これは私のコードです:

SELECT interval_total, COUNT(*) FROM(
SELECT clients.clientId, total.TotalPoints,
CASE
    WHEN TotalPuntos >=5000 THEN 5000
    WHEN TotalPuntos >= 1000 THEN 1000
    WHEN TotalPuntos >= 500 THEN 500
    WHEN TotalPuntos >= 100 THEN 100
    ELSE 0
END as interval_total
FROM
    [TotalSumOfPoints] total,
    [Client] clients
WHERE total.clientId = clients.clientId
AND clients.cardId LIKE '2001%')
GROUP BY interval_total

このエラーの場合:

Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'GROUP'.

私はさまざまな投稿を読んでいて、サブクエリ内にCASEステートメントを配置することで、この種のクエリを実行できるという結論に達しました(この投稿を読んでこの結論に達しました)。明らかに私は何か間違ったことをしている。何か助けはありますか?

4

1 に答える 1

4

問題は、次のように、サブクエリのエイリアスを指定する必要があることです。

SELECT interval_total, COUNT(*) FROM(
SELECT clients.clientId, total.TotalPoints,
CASE
    WHEN TotalPuntos >=5000 THEN 5000
    WHEN TotalPuntos >= 1000 THEN 1000
    WHEN TotalPuntos >= 500 THEN 500
    WHEN TotalPuntos >= 100 THEN 100
    ELSE 0
END as interval_total
FROM
    [TotalPuntosPorCuenta] total,
    [SanRoque].[dbo].[Socio] clients
WHERE total.clientId = clients.clientId
AND clients.cardId LIKE '2001%') tbl /* <--- here */
GROUP BY interval_total
于 2012-05-29T15:02:24.933 に答える