1

これは私のデータベーススキーマです:

http://sqlfiddle.com/#!3/bbaea/3

重要な列はCreationTime(タイムスタンプとして) とResult.

Result現在、0、1、2、または 3 にすることができます

私の結果は次のようになります。

Year, Month, Day | Entries with Result 0 | With 1 | With 2 | ..

私は SQL Server 自体に不慣れで、この問題を解決する方法がわかりません。(私のフィドルのように) いくつかのサブセレクトを試しましたが、期待どおりに動作しません。これは、サブセレクトに参加する必要があるためだと思いますが、どうすればよいですか? また、これを行うための最良の方法を知りたい..

手助け?

4

2 に答える 2

1

あなたはこれを試すことができます

SELECT YEAR(CreationTime) AS y, MONTH(CreationTime) AS m, DAY(CreationTime) AS d,
       COUNT(CASE WHEN Result = 0 THEN 1 END) AS WITH0,
       COUNT(CASE WHEN Result = 1 THEN 1 END) AS WITH1,
       COUNT(CASE WHEN Result = 2 THEN 1 END) AS WITH2          
FROM History
GROUP BY YEAR(CreationTime), MONTH(CreationTime), DAY(CreationTime)
于 2013-02-19T08:45:28.023 に答える
1

複数のクエリを結合する必要はありません。次のcaseステートメントを使用できます。

SELECT
    DAY(CreationTime) AS d, MONTH(CreationTime) AS m, YEAR(CreationTime) AS y
    ,count(CASE WHEN RESULT = 0 THEN 1 ELSE NULL END) AS R0
    ,count(CASE WHEN RESULT = 1 THEN 1 ELSE NULL END) AS R1
    ,count(CASE WHEN RESULT = 2 THEN 1 ELSE NULL END) AS R2
FROM History
GROUP BY DAY(CreationTime), MONTH(CreationTime), YEAR(CreationTime)


SELECT * FROM History;

SQLフィドルに関する回答。

于 2013-02-19T08:48:10.393 に答える