メッセージを送信するテーブルがあります。昨年、月ごとに送信されたメッセージの総数を取得したいと思います。私はSQLを初めて使用するため、問題が発生しています。私はMSSQL2012を使用していますこれは私のSQLです
SELECT sentDateTime, MessageID, status AS total, CONVERT(NVARCHAR(10), sentDateTime, 120) AS Month
FROM MessageTable
WHERE CAST(sentDateTime AS DATE) > '2017-04-01'
GROUP BY CONVERT(NVARCHAR(10), sentDateTime, 120), sentDateTime, MessageID, status
ORDER BY Month;
month()
andyear()
関数はdatepart()
この目的よりも便利だと思います。
私は行くだろう:
select year(sentDateTime) as yr, month(sentDateTime) as mon, count(*)
from MessageTable
where sentDateTime > '2017-04-01'
group by year(sentDateTime), month(sentDateTime)
order by min(sentDateTime);
その他の注意事項:
select
気になる列のみをに含めます。これは、月とカウントを定義するものになります。group by
気になる列のみをに含めます。group by
データで見つかった式のすべての組み合わせが列を定義します。sentDateTime
比較のために明示的に日付に変換する必要はありません。order by
受注時点での結果。を使用するmin()
と便利です。year()
間違いを犯さないようになります。たとえば、2018-04のデータと2017-04のデータを含めます。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加