2016-08-23 6 views
4

この機能を使用して日付を変換したいと思います。私はSQLサーバーを使用しています。2014SQLは既存のクエリに日付の変換を追加します

CONVERT(varchar, sc.StartDate,103) + '" + " " + "' + '" + " - " + "' + CONVERT(varchar, sc.EndDate,103) SIPDate 

したがって、dd/mm/yyyy - dd/mm/yyyyで表示されます。それをクエリにどのように追加するのですか?ありがとう。

クエリは次のとおりです。

SELECT CONCAT(sc.StartDate, sc.ENDDate) SIPDate, 
    COUNT (sj.LOComment) WeekReviewed, 
    COUNT(sjd.WeekNo) TotalWeek, 
    SUM(sjj.TotalDaysRecord) TotalDaysRecord, 
    COUNT(CASE sjd.JournalStatusCode WHEN 'D' THEN 1 ELSE NULL END) PENDingComplete 
FROM StudentJournalDate sjd 
LEFT JOIN StudentJournal sj 
    ON sjd.WeekNo = sj.WeekNo 
LEFT OUTER JOIN 
(
    SELECT sj.WeekNo, 
      CASE WHEN RTRIM(sj.Day1Journal) = '' OR sj.Day1Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day2Journal) = '' OR sj.Day2Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day3Journal) = '' OR sj.Day3Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day4Journal) = '' OR sj.Day4Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day5Journal) = '' OR sj.Day5Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day6Journal) = '' OR sj.Day6Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day7Journal) = '' OR sj.Day7Journal IS NULL THEN 0 ELSE 1 END AS TotalDaysRecord 
    FROM StudentJournal sj 
) AS sjj 
    ON sjj.WeekNo = sj.WeekNo 
LEFT OUTER JOIN StudentSIP sc 
    ON sc.AdminNo = sjd.AdminNo 
GROUP BY CONCAT(sc.StartDate, sc.ENDDate) 
+0

こんにちは、私はあなたに以下の別の答えをくれました。それが気に入らないのであれば、クエリをサブクエリとしてラップし、日付を外部にフォーマットすることができます。 –

答えて

3

あなただけSELECTGROUP BYこのフォーマットされた日付表現をすることができ、すなわち:

SELECT CONVERT(varchar, sc.StartDate, 103) + " - " + CONVERT(varchar, sc.EndDate, 103) AS SIPDate, 
     COUNT (sj.LOComment) WeekReviewed, 
     COUNT(sjd.WeekNo) TotalWeek, 
     SUM(sjj.TotalDaysRecord) TotalDaysRecord, 
     COUNT(CASE sjd.JournalStatusCode WHEN 'D' THEN 1 ELSE NULL END) PENDingComplete 
FROM StudentJournalDate sjd 
LEFT JOIN StudentJournal sj 
    ON sjd.WeekNo = sj.WeekNo 
LEFT OUTER JOIN 
(
    SELECT sj.WeekNo, 
      CASE WHEN RTRIM(sj.Day1Journal) = '' OR sj.Day1Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day2Journal) = '' OR sj.Day2Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day3Journal) = '' OR sj.Day3Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day4Journal) = '' OR sj.Day4Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day5Journal) = '' OR sj.Day5Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day6Journal) = '' OR sj.Day6Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day7Journal) = '' OR sj.Day7Journal IS NULL THEN 0 ELSE 1 END AS TotalDaysRecord 
    FROM StudentJournal sj 
) AS sjj 
    ON sjj.WeekNo = sj.WeekNo 
LEFT OUTER JOIN StudentSIP sc 
    ON sc.AdminNo = sjd.AdminNo 
GROUP BY CONVERT(varchar, sc.StartDate, 103) + " - " + CONVERT(varchar, sc.EndDate, 103) 
+0

OPの表現は奇妙に見えますが、これはおそらくこのようなものでしょう。 CONVERT(varchar、sc.StartDate、103)+ ' - ' + CONVERT(varchar、sc.EndDate、103) –

+0

@RichBennerはい、それは奇妙に見え、SOのマークダウンが間違って色分けされ、問題を示しています。私は自分の答えを更新しました、ありがとう。 –

+0

こんにちは、お手伝いをありがとうございます。私はクエリメッセージ102、レベル15、状態1、行2を実行すると、これらのエラーが発生しました 'COUNT'の近くの構文が正しくありません。 メッセージ156、レベル15、状態1、行20 キーワード 'AS'の近くの構文が正しくありません。 – user3807187

1

これを試してみてください。あなたのSQL Serverは2014年なので、フォーマットを使用して日付をフォーマットすることができます

SELECT  CONCAT(FORMAT(sc.StartDate,'dd/MM/yyy'),+ ' - ' +FORMAT(sc.ENDDate,'dd/MM/yyy')) SIPDate, 
    COUNT (sj.LOComment) WeekReviewed, 
    COUNT(sjd.WeekNo) TotalWeek, 
    SUM(sjj.TotalDaysRecord) TotalDaysRecord, 
    COUNT(CASE sjd.JournalStatusCode WHEN 'D' THEN 1 ELSE NULL END) PENDingComplete 
FROM StudentJournalDate sjd 
LEFT JOIN StudentJournal sj 
    ON sjd.WeekNo = sj.WeekNo 
LEFT OUTER JOIN 
(
    SELECT sj.WeekNo, 
      CASE WHEN RTRIM(sj.Day1Journal) = '' OR sj.Day1Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day2Journal) = '' OR sj.Day2Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day3Journal) = '' OR sj.Day3Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day4Journal) = '' OR sj.Day4Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day5Journal) = '' OR sj.Day5Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day6Journal) = '' OR sj.Day6Journal IS NULL THEN 0 ELSE 1 END + 
      CASE WHEN RTRIM(sj.Day7Journal) = '' OR sj.Day7Journal IS NULL THEN 0 ELSE 1 END AS TotalDaysRecord 
    FROM StudentJournal sj 
) AS sjj 
    ON sjj.WeekNo = sj.WeekNo 
LEFT OUTER JOIN StudentSIP sc 
    ON sc.AdminNo = sjd.AdminNo 
GROUP BY CONCAT(FORMAT(sc.StartDate,'dd/MM/yyy'),+ ' - ' +FORMAT(sc.ENDDate,'dd/MM/yyy')) 
+0

こんにちは、助けてくれてありがとう。私はこのエラーが発生したときに私はクエリを実行します。 Msg 164、レベル15、状態1、行26 各GROUP BY式には、外部参照ではない少なくとも1つの列が含まれている必要があります。 – user3807187

+0

@ user3807187私はクエリを編集しました。もう一度実行し、エラーがある場合はお知らせください – JonWay

+0

こんにちは、あなたのクエリも動作します。しかし、@ Bim Biegeleisenはより早くクエリを提供します。だから私は彼にアップヴォートを与えなければならない。ありがとう:) – user3807187

関連する問題