【发布时间】:2013-01-24 07:13:24
【问题描述】:
我写了一个函数来统计汇总表的记录。此功能在 MSSQL 2005 下运行良好:
DECLARE
@start datetime,
@final datetime,
SET @start = '08.02.2012'
SET @final = '08.02.2013'
SELECT
CAST(
FLOOR(ISNULL(col1,col2)/50) * 50 AS int
) AS [MyCol1],
CAST(
FLOOR(ISNULL(col1,col2)/50) * 50 AS int
)+49 AS [MyCol2],
COUNT(*) AS [Anzahl],
CAST(AVG(col3) AS decimal(3,2)) AS [MyCol3]
FROM T
WHERE Time BETWEEN @start AND @final
GROUP BY
CAST(
FLOOR(ISNULL(col1,col2)/50) * 50 AS INT
)
ORDER BY 1
现在我想在 MSSQL 2000 系统上使用这个功能,但是 Group By region 似乎是错误的:
选择列表中的 Column 无效,因为它不包含在聚合中 函数和 GROUP BY 子句中。
有人可以帮我吗?
【问题讨论】:
-
手边没有 2000 个可供测试。
GROUP BY CAST(FLOOR(ISNULL(col1, col2) / 50) * 50 AS INT), CAST(FLOOR(ISNULL(col1, col2) / 50) * 50 AS INT) + 49有效吗?也许 2000 没有逻辑来检测按第一个和第二个分组是相同的分组。 -
谢谢你,马丁!效果很好!
标签: sql sql-server sql-server-2005 casting group-by