2016-04-12 19 views
1

私はこのコードを私は助けが必要です。コードの要点は、テーブル内のすべての日付を印刷し、毎週後に休憩することです。週は月曜日から始まります。私のSQLコードはすべてを印刷しますが、私は残りの部分を達成するためにループを使用する方法がわかりません。日付とその他のレコードを含むテーブルを表示

SELECT name, comment, hrs, CONVERT(varchar(20), timestamp, 120) AS timestamp, DATEADD(day, - DATEPART(weekday, timestamp), timestamp) AS Week_Start, 
      CONVERT(varchar(10), DATEPART(ww, DATEADD(dd, 0, timestamp))) AS WeekNo 

FROM Tablename 

WHERE MONTH(timestamp) = '$month' 

and YEAR(timestamp) = '$year' 

order by wk 

のは、私たちは私がグループをしたい2001/01/01日曜日であれば、私は、たとえば週でグループ化されたすべての日を取得したい

を2001/01/31ために2001年1月1日からの日数を持っているとしましょう以下のような:

Day Date Name Hrs

Mon 2016-03-01 Username 8  
    Tue 2016-03-02 Username 8  
    Wed 2016-03-03 Username 9  
    Thu 2016-03-04 Username 10 
    Fri 2016-03-05 Username 10 
    Sat 2016-03-06 - 
    Sun 2016-03-07 Username 10 
    ----------------------------------    
    Mon 2016-03-08 Username 8  
    Tue 2016-03-09 - 
    Wed 2016-03-10 - 
    Thu 2016-03-11 - 
    Fri 2016-03-12 Username 10 
    Sat 2016-03-13 - 
    Sun 2016-03-15 Username 10 

私はPHP/MS SQL 2008

ホーを使用していますw毎週後に壊れますか?

ありがとうございました。

+0

各行の日付を独自の列に表示するか、1つの列に日付の文字列を表示しますか? –

+0

[平日](https://msdn.microsoft.com/en-us/library/ee634550.aspx)のベースで中断します。 – syck

+0

投稿された情報が不足しているため、何をしようとしているのか、それを行うためのクエリを書く手助けをする方法が不明です。これは始めるのに最適な場所です。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

答えて

0

CTRL + Tを押すと、クエリ出力がテキストに変更されます。

SET NOCOUNT ON 

SELECT name, 
     comment, 
     hrs, 
     CONVERT(varchar(20), timestamp, 120) AS timestamp, 
     DATEADD(day, - DATEPART(weekday, timestamp), timestamp) AS Week_Start, 
     CONVERT(varchar(10), DATEPART(ww, DATEADD(dd, 0, timestamp))) AS WeekNo 
INTO #TempTableName 
FROM Tablename 
WHERE MONTH(timestamp) = '$month' 
and YEAR(timestamp) = '$year' 
order by wk 

while ((select count(*) from #TempTableName) > 0) 
begin 
    select top 7 * from #TempTableName 
    delete top (7) from #TempTableName 
end 
+0

あなたのコードは完璧に動作します問題は、1週間目のデータのみを出力して停止することです。残りはどうやって手に入れますか? – user

+0

停止してはいけません。 #TempTableNameに7つ以上のレコードがある場合、whileループはすべてのレコードが印刷されるまで続行する必要があります。そのテーブルにはいくつのレコードがありますか? –

+0

私は27のレコードを持っています。 – user

関連する問題