-1


0

このクエリは最初にテーブルの下に私を返します。 例えば; 2009-06-01 00:00:00人々は私のシステムに「41」回入ります。 セカンドテーブルが必要

@ date1 smalldatetime、@ date2 smalldatetime、@ countgap int、@ page nvarchar(100)を選択します。@ date1 = '2009-01-01'、@ date2 = '2009-12-30 23:59:59'、@ countgap = 1、@ page = 'TümSayfalar'

宣言@@ date1 smalldatetime、@@ date2 smalldatetime、@ COUNT INT select @@ date1 = @ date1、@@ date2 = @ date2、@ COUNT = 1 select @@ date1 TARIH、@ COUNT SIRA INTO #TMP WHILE @@ date1 < @@ date2 BEGIN SELECT @@ date1 = DATEadd(月、@ countgap、@@ date1)、@ COUNT = @ COUNT 1 INSERT IN #TMPに選択@@ date1 TARIH、@COUNT SIRA END選択t1.TARIH、t1.SIRA、 #TMP t1からVISITINGCOUNT = isnull(t2.TARIH、0)を左に結合(count(page)をTARIH、datepart(month、Date)をscr_StatisticaLogからSIRAとして選択、@ Date1と@ date2の間の日付および(Page = @ pageまたは@ page = 'TümSayfalar')およびProcessType = 'PageView' GROUP BY datepart(月、日付))t2 on t2.SIRA = t1.SIRA注文をt1.SIRAで返す
2009-01-01 00:00:00 1 0 2009-02-01 00:00:00 2 0 2009-03-01 00:00:00 3 0 2009-04-01 00:00:00 4 1 2009- 05-01 00:00:00 5 1 2009-06-01 00:00:00 6 41 2009-07-01 00:00:00 7 0 2009-08-01 00:00:00 8 0 2009-09- 01 00:00:00 9 0 2009-10-01 00:00:00 10 0 2009-11-01 00:00:00 11 0 2009-12-01 00:00:00 12 1 2010-01-01 00 :00:00 13 0
2009年1月12日1

3 回答


1


http://msdn.microsoft.com/en-us/library/ms188651(SQL.90).aspx [`+ DATENAME `および ` DATEPART +`関数]を使用して日付をフォーマットします。

SELECT
  DATEPART(year,DateColumn) + '-' + DATENAME(month,DateColumn) AS FormattedDate
FROM
  Table


0


あなたが必要とするものはそれにあらゆる日付がある calendarテーブルです。 その後、結合したままで2番目のテーブルを取得します。

編集:ああ.. ポスターからの新しい情報はこの回答を無効にします…​


0


ウェルボグの答えはうまくいく。

私はもう少し行きます。 MySQLの世界では、私はちょうどその日にleft(10)をして、それによってグループ化したいと思います。 その後、一時テーブルやループを使用せずに1回のパスでクエリ全体を実行できます。 私はSQLサーバーがあなたに日付を部分文字列化させると思いますが、そうでなければWelbogがあなたに示したように日付を作ることによってそれをすることができます。