0

我有这个查询可以正确提取数据,但我希望时间戳字段 (TIM) 采用不同于 Day(TIM) 的另一种格式。但是我收到错误,因为查询是以这种方式聚合的。

SELECT
DAY(TIM) As 'Day',
[G.TRU] = SUM(case when SEC = 'TRU' and TYP = 'GEO' then 1 else 0 end),
[G.LOA] = SUM(case when SEC = 'LOA' and TYP = 'GEO' then 1 else 0 end),
[G.SEA] = SUM(case when SEC = 'SEA' and TYP = 'GEO' then 1 else 0 end),
[R.SEA] = SUM(case when SEC = 'SEA' and TYP = 'RTE' then 1 else 0 end),
TOTAL  = COUNT(TIM)
FROM AGEO
WHERE SRC = 'EW'
GROUP BY DAY(TIM)

结果:

 Day   G.TRU    G.LOA   G.SEA   R.SEA   TOTAL
-----------------------------------------------
 25      2        4       14      1      21
 26      3        0        2      9      14
----------------------------------------------- 

我希望 25 和 26 采用 YYYY-MM-DD 格式。有办法吗?

4

1 回答 1

1

不 - 您按 DAY(TIM)分组,因此可能会有不同的月份和年份给出同一天。例如,假设您有两行,一个在 1 月 1 日,一个在 2 月 1 日 - 它们将被聚合在一起,那么您希望为该结果行检索哪一个?

编辑:好的,我不是 SQL 人,但我认为你想要类似的东西:

SELECT
    CONVERT(Date, TIM) As TIMDATE,
    [G.TRU] = SUM(case when SEC = 'TRU' and TYP = 'GEO' then 1 else 0 end),
    [G.LOA] = SUM(case when SEC = 'LOA' and TYP = 'GEO' then 1 else 0 end),
    [G.SEA] = SUM(case when SEC = 'SEA' and TYP = 'GEO' then 1 else 0 end),
    [R.SEA] = SUM(case when SEC = 'SEA' and TYP = 'RTE' then 1 else 0 end),
    TOTAL  = COUNT(TIM)
FROM AGEO
WHERE SRC = 'EW'
GROUP BY TIMDATE
于 2012-04-27T17:09:45.873 回答