1

日付列のberfore SQL カウントと SQLを読んで日付ごとにカウントを取得しましたが、これらは私の問題を指摘していません。

次のテーブル レコードがあります (テーブルには 2 つの列しかありません)

| VALUE   | TIME               |
--------------------------------
| test    | 04.05.2012 11:46:46|
| test2   | 04.05.2012 11:46:49|
| test3   | 06.05.2012 11:47:46|
| test2   | 05.05.2012 11:47:46|
| test    | 04.05.2012 11:51:46|

次のように表示したい:

| VALUE   | COUNT   | NEWTIME  |
--------------------------------
| test    | 2       |04.05.2012|
| test2   | 1       |04.05.2012|
| test2   | 1       |05.05.2012|
| test3   | 1       |06.05.2012|

次のような日付部分としてVALUE使用して数えました:dayTIME

select datepart(d, TIME), count(VALUE) from table1
group by datepart(d, TIME)

追加のNEWTIME列も取得する方法は? SQL Server 2005 で可能ですか?

ありがとうございました

4

5 に答える 5

2
select VALUE,
       count(*) as COUNT,
       dateadd(day, datediff(day, 0, TIME), 0) as NEWTIME
from YourTable
group by VALUE, dateadd(day, datediff(day, 0, TIME), 0)

SEデータ

于 2012-05-07T12:18:51.703 に答える
1

追加してフォーマットすることもできますが、グループ化する必要もあります。

select value, datepart(d, TIME), count(VALUE), datepart(mmonth, time) + '.' + datepart(day, time) + '.' + datepart(year, time) as newtime
from table1
group by datepart(d, TIME, newtime) 

区切り文字としてピリオドを使用することを気にしない場合は、少し簡単に行うことができます。

select value, datepart(d, TIME), count(VALUE), convert(varchar, time, 101) as newtime
from table1
group by datepart(d, TIME, newtime) 

また、出力に重複があることに気付きました。個人的には、代わりにこれを行います。

select value, count(*) as cnt, convert(varchar, time, 101) as newtime
from table1
group by value, newtime
于 2012-05-07T12:19:15.497 に答える
0

テストしていませんが、私はそのようにします

select VALUE, count(*) AS COUNT, convert(date, max(TIME)) AS NEWTIME --max , min whatever 
from table1
group by VALUE, datepart(d, TIME) --dont know why you group by timne not value 
于 2012-05-07T12:14:58.420 に答える
0

私は本当にあなたの質問を理解していませんが、それが正しいことを理解していれば、時間列から短い日付でデータをグループ化したいですか? その場合、結果は次のとおりです。

select max(VALUE) as VALUE, count(VALUE) as count, CONVERT(VARCHAR(10), TIME , 104) as newtime
from table1
group by CONVERT(VARCHAR(10), TIME , 104)

値でグループ化しない場合、値を表示する理由がわかりません

于 2012-05-07T12:20:14.077 に答える
0
select VALUE, count(VALUE), datepart(d, MIN(TIME)) AS NEWTIME
from table1
group by datepart(d, TIME)

MINまたはMAX集計関数のいずれかを使用できます。あなたの場合、 を介して1 日レベルでグループ化しているため、問題にはなりませんdatepart

于 2012-05-07T12:14:31.550 に答える