SELECT
material,
SUM([Amount]) AS [Amount],
RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
FROM
[rec_stats]
GROUP BY
material,
RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
ORDER BY
material,date_in
由于date_in,代码不会运行,无论如何都要解决这个问题?
答案 0 :(得分:24)
应用另一个聚合,那么怎么样;
order by min([date_in])
答案 1 :(得分:1)
按照您分组的相同表达式排序。
最好对当月的DATE
表示进行分组和排序。
在SQL Server 2008
中:
SELECT material, SUM([Amount]) AS [Amount], DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE))
FROM [rec_stats]
GROUP BY
material,
DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE))
ORDER BY
material, DATEADD(d, 1 - DAY(GETDATE()), CAST(GETDATE() AS DATE))
答案 2 :(得分:0)
您只能通过在select语句中使用的内容进行排序。在选择语句中无法单独使用Date_in,因此您无法使用它。根据您的RDBMS,您可以执行以下操作:
SELECT
material,
SUM([Amount]) AS [Amount],
RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
FROM
[rec_stats]
GROUP BY
material,
RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
ORDER BY
material,RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
答案 3 :(得分:0)
您是否尝试按月汇总?如果是这样,请尝试:
SELECT
material,
SUM([Amount]) AS [Amount],
DATEPART(year, [date_in]) as y,
DATEPART(month, [date_in]) as m,
DATEPART(month, [date_in]) + ' ' + DATEPART(year, [date_in]) AS MonthYearCombined
FROM
[rec_stats]
GROUP BY
material,
DATEPART(year, [date_in]),
DATEPART(month, [date_in])
ORDER BY
material,y,m
注意:您可能必须转换“MonthYearCombined”列中的值 - 我实际上建议您在代码而不是SQL中执行此操作,但希望包含对它的一些引用。
答案 4 :(得分:0)
您无法像原始查询一样处理date_in列。相反,您可以NEST查询并按如下方式阅读:
SELECT
material,
SUM([Amount]) AS [Amount],
RIGHT(CONVERT(varchar(50), [date_in], 106), 8)
FROM
(
Select material, Amount, RIGHT(CONVERT(varchar(50), [date_in], 106), 8) as DateIn
From [rec_stats]
) X
GROUP BY
material,
DateIn
ORDER BY
material,DateIn
我无法在我的开发环境中测试它,但我相信这会给你一个想法。
答案 5 :(得分:0)
使用此
order by 1,2,3,4,5