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日の2つの行があるとします。これらは一緒に集計されるので、その結果の行に対してどちらを取得する予定ですか。

編集:わかりました、私は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 に答える