0

説明するのは非常に難しい問題ですが、おそらく (願わくば) 簡単に解決できるので、私が達成しようとしていることを説明します。

1 日ごとに複数のログを個別の行として入力できるテーブルがあり、別の列として 10 進数があり、次のような毎日の要約を作成しようとしています。

1900 年 1 月 1 日 | | | 5.5

1900 年 1 月 1 日に 2.5 のエントリが 1 つ、メイン テーブルに 3 のエントリが 1 つある場合、その日の値を合計しますか?

私の唯一の問題は、日付が同じ場合に日付を追加することです。次のようなことを考えていました

個別の日付を選択し、それを日付の小数列の合計を取得するテーブルと結合します...そして、それは私がよくわからないところですか?

どんな助けでも素晴らしいでしょう!ありがとう

4

6 に答える 6

2

テーブルの名前が次のようなデータを含むログの場合

log_date     | value
1900-01-01   | 2.5
1900-01-01   | 3

あなたのクエリは

SELECT sum(value) FROM logs GROUP BY log_date
于 2012-09-25T11:30:25.553 に答える
1

あなたが探しているのは、おそらく GROUP BY 句です。

SELECT [ yourdatecol, ] sum(yourdecimalcol) FROM yourtable
  [ WHERE yourdatecol = .. ] 
     GROUP BY [ get_ymd_from_date(yourdatecol) | yourdatecol ] ;

このような構文を使用すると、同じ datecol 値で選択された行セットの合計を取得できます。日付に H/M/ss が含まれていて、1 日あたりの合計が必要な場合は、日付を概算することもできます (たとえば、Y/M/D の部分のみを取得します)。角カッコ内はオプションパーツです。

于 2012-09-25T11:31:10.190 に答える
1
SELECT log_date,sum(value) FROM logs GROUP BY log_date
于 2012-09-25T11:33:03.080 に答える
0

DateTimeが使用されていると思いますが、logdateと呼びましょう。また、もう1つは小数であると想定しているので、logdecimalと呼びましょう。

SQL Server 2008を使用すると、次のことができます(これは、時間部分のない日付と呼ばれるタイプです)。

SELECT 
CAST(logdate as date) as TheDay, 
SUM(logdecimal) as TheSum 
FROM logTable
GROUP BY CAST(logdatetime as date)

日付を入力せずにSQLサーバーを使用すると、次のようになります。

SELECT 
CONVERT(varchar(10), logdate, 101) as TheDay, 
SUM(logdecimal) as TheSum 
FROM logTable
GROUP BY  CONVERT(varchar(10), logdate , 101)

よろしく、オルレ

編集:これは、日付(時間部分を含まない)としてグループ化するDateTime(時間部分を含む)の場合に機能します。この質問ではそうではなかったようです。

于 2012-09-25T11:45:34.243 に答える
0

これを試して :

SELECT CONVERT(VARCHAR, DateColumn, 103) AS OutputDate, SUM(ValueColumn) AS TotalValue
FROM YourTable
GROUP BY CONVERT(VARCHAR, DateColumn, 103) 
于 2012-09-25T11:36:11.850 に答える
0
CREATE VIEW Summary
AS
SELECT
    DateValue,
    SUM(DecimalValue) DayTotal
FROM
    EventTable
GROUP BY
    DateValue;

それで

SELECT
    *
FROM
    Summary
WHERE
    DateValue = '1900-01-01'
于 2012-09-25T11:31:04.467 に答える