0

問題を引き起こしている SQL クエリがあります。私がこれまでに持っているSQLは次のとおりです。

SELECT Dated, [Level 1 reason], SUM(Duration) AS Mins
FROM Downtime
GROUP BY Dated, [Level 1 reason]

今私が抱えている問題は、必要に応じてグループ化されるのではなく、結果に複数の理由が含まれていることです。問題の結果の例は次のとおりです。

1/2/2013 10:02:00 AM    Westport    2
1/2/2013 10:17:00 AM    Westport    9
1/2/2013 10:48:00 AM    Engineering 5
1/2/2013 11:01:00 AM    Facilities  6

意図した結果は、日付に対して 1 つの Westport グループが存在することです。クエリは複数の日付も処理する必要がありますが、読みやすくするためにスニペットには含まれていません。

助けてくれてありがとう。単純な理由であることは知っていますが、それを理解することはできません。

**編集: 申し訳ありませんが、これは Access で実行しています。Group by Date を削除すると、Access でエラーが発生します。私はそれをどうするか迷っています

「集計関数の一部として日付指定された式を含まないクエリを実行しようとしました。」**

D Stanley は次のクエリで私の質問を解決しました

SELECT DateValue(Dated) AS Dated, [Level 1 reason], SUM(Duration) AS Mins
FROM Downtime
GROUP BY DateValue(Dated), [Level 1 reason]
4

3 に答える 3

2

Access では、DateValue関数を使用して日付列から時刻を削除します。

SELECT DateValue(Dated) Dated, [Level 1 reason], SUM(Duration) AS Mins
FROM Downtime
GROUP BY DateValue(Dated), [Level 1 reason]
于 2013-06-24T12:56:45.343 に答える
0

時間要素を削除したいようです。その方法は、データベース システムによって異なります。SQL Server では次のようになります。

SELECT DATEADD(day,DATEDIFF(day,0,Dated),0), [Level 1 reason],
       SUM(Duration) AS Mins
FROM Downtime
GROUP BY DATEADD(day,DATEDIFF(day,0,Dated),0), [Level 1 reason]

これ0は、暗黙的に日付 (01/01/1900 午前 0 時) に変換できるため機能し、datepart の不可欠な部分 (ここでは)DATEADDでのみ機能します。つまり、これは「1900 年 1 月 1 日午前 0 時から何日経過したか」です。そして「同じ日数を 1900 年 1 月 1 日の午前 0 時に追加してみましょう」 - これにより、最初の値と同じ日付が得られますが、常に午前 0 時になります。DATEDIFFday


dayAccess の場合は、datepart ( gets ) を引用する必要があると思います"d"。暗黙の変換がまだ機能するかどうかはわかりませんが、上記で0使用した場所をすべて定数の日付に置き換えることができます。0

SELECT DATEADD("d",DATEDIFF("d","01/01/1900",Dated),"01/01/1900"),
       [Level 1 reason],
       SUM(Duration) AS Mins
FROM Downtime
GROUP BY DATEADD("d",DATEDIFF("d","01/01/1900",Dated),"01/01/1900"),
         [Level 1 reason]
于 2013-06-24T12:49:16.417 に答える
0

アクセスでは次のようになると思います:

SELECT CDate(Int(Dated)) , [Level 1 reason],
   SUM(Duration) AS Mins
FROM Downtime
GROUP BY CDate(Int(Dated)) , [Level 1 reason];
于 2013-06-24T13:01:37.393 に答える