私はtomcat、jsp、およびMSSQL 2008を使用しており、毎日、毎週、毎月、毎年などの要約データを取得したいと考えています。 ここから、MSSQLのこれらのサマリーデータに対してdatapart()関数を使用する方法を検索しました。 JSPで は、私は同じクエリ内のJSP executeQuery()とMSMSの結果
PreparedStatement pr = conn.prepareStatement(query);
ResultSet rs=pr.executeQuery();
及びMSMSでの使用、試験用DIRECTRYを照会しました。
私のJSPプログラムから2つの問題がありましたが、同じクエリを使用してMS SQL Server Management Studioでうまくいきました。
This is a screenshot of query result in MSMS
私の問題は次のとおりである: "年次" の
- 問合せは、JSPを使用していません。
- 「月間」のクエリでは、月の値(1,2,3、...)は正しく返されませんが、0(ゼロ)のみです。
"Daily"と "Weekly"はうまくいきます。どうすればこれらの問題を解決できますか? ありがとうございます。
私のクエリは次のとおりです。
switch (unit)
{
case "Daily" :
query = "SELECT cast(datepart(dy, ProcessDate) as varchar(3)) Day, " +
"cast(year(ProcessDate) as varchar(4)) Year, " +
"SUM(case WHEN Warranty = 'Y' then 1 else 0 end) InWarranty, " +
"SUM(case WHEN Warranty = 'N' then 1 else 0 end) OutOfWarranty, " +
"SUM(case WHEN Warranty = 'X' then 1 else 0 end) NAWarranty " +
"FROM zz_RMA_Summary " +
"WHERE ProcessDate BETWEEN '" + sDate + "' AND '" + eDate + "' " +
"group by year(ProcessDate), datepart(dy, ProcessDate) " +
"order by year(ProcessDate) DESC, datepart(dy, ProcessDate) DESC ";
break;
case "Weekly" :
query = "SELECT cast(datepart(wk, ProcessDate) as varchar(2)) Week, " +
"cast(year(ProcessDate) as varchar(4)) Year, " +
"SUM(case WHEN Warranty = 'Y' then 1 else 0 end) InWarranty, " +
"SUM(case WHEN Warranty = 'N' then 1 else 0 end) OutOfWarranty, " +
"SUM(case WHEN Warranty = 'X' then 1 else 0 end) NAWarranty " +
"FROM zz_RMA_Summary " +
"WHERE ProcessDate BETWEEN '" + sDate + "' AND '" + eDate + "' " +
"group by year(ProcessDate), datepart(wk, ProcessDate) " +
"order by year(ProcessDate) DESC, datepart(wk, ProcessDate) DESC ";
break;
case "Monthly" :
query = "SELECT cast(datepart(mm, ProcessDate) as varchar(2)) Month, " +
"cast(year(ProcessDate) as varchar(4)) Year, " +
"SUM(case WHEN Warranty = 'Y' then 1 else 0 end) InWarranty, " +
"SUM(case WHEN Warranty = 'N' then 1 else 0 end) OutOfWarranty, " +
"SUM(case WHEN Warranty = 'X' then 1 else 0 end) NAWarranty " +
"FROM zz_RMA_Summary " +
"WHERE ProcessDate BETWEEN '" + sDate + "' AND '" + eDate + "' " +
"group by year(ProcessDate), datepart(mm, ProcessDate) " +
"order by year(ProcessDate) DESC, datepart(mm, ProcessDate) DESC ";
break;
case "Yearly" :
query = "SELECT cast(yyyyy, ProcessDate) as varchar(4)) Year, " +
"SUM(case WHEN Warranty = 'Y' then 1 else 0 end) InWarranty, " +
"SUM(case WHEN Warranty = 'N' then 1 else 0 end) OutOfWarranty, " +
"SUM(case WHEN Warranty = 'X' then 1 else 0 end) NAWarranty " +
"FROM zz_RMA_Summary " +
"WHERE ProcessDate BETWEEN '" + sDate + "' AND '" + eDate + "' " +
"group by datepart(yyyy, ProcessDate) " +
"order by datepart(yyyy, ProcessDate) DESC ";
break;
}
ありがとう、sepupic。あなたのアドバイスは決定的なものではありませんでしたが、私は答えを得ることができました。 「Monthly」と「Yearly」の部分には、JSPに間違ったコードがいくつかあります。 – Soo