0

結果セットを返すストアドプロシージャに計算列をいくつか追加しました。私はそれをC#/.NETから呼び出します。新しい列(最後まで)は両方とも0の値を返します。これが私が返すものの最初の行とその下のsprocです:

Daily Pricing and Volume        5/4/2012    5229    5249    5256    0   0


ALTER PROCEDURE [dbo].[spProcedureStatsCollectionCountComparisons]

AS

DECLARE @MaxDataDownloadDate date

SET @MaxDataDownloadDate = dbo.MostRecentTradeDateForDataDownload()

SELECT ProcedureName, TradeDate, LatestCount, PriorCount, AvgAllCounts, 
    ((LatestCount-PriorCount)/PriorCount) AS PctChgLatestVsPrior, 
    ((LatestCount-AvgAllCounts)/AvgAllCounts) AS PctChgLatestVsAvg
FROM vwProcedureStatsCollectionCountComparisons
WHERE TradeDate = @MaxDataDownloadDate

私の質問は、ストアドプロシージャからの結果セットで列エイリアスを使用できないか、または作業中に欠落している他の問題がありますか?前もって感謝します..

要求に応じて、関連するC#コード:

SqlDataReader collectionCounts = dal.ProcedureStatsCollectionCountComparisons();
int rowCounter = 4;
while (collectionCounts.Read())
{

    wkhst.Cells[rowCounter, 1] = collectionCounts["ProcedureName"];
    wkhst.Cells[rowCounter, 2] = collectionCounts["TradeDate"];
    wkhst.Cells[rowCounter, 3] = collectionCounts["LatestCount"];
    wkhst.Cells[rowCounter, 4] = collectionCounts["PriorCount"];
    wkhst.Cells[rowCounter, 5] = collectionCounts["AvgAllCounts"];
    wkhst.Cells[rowCounter, 6] = collectionCounts["PctChgLatestVsPrior"];
    wkhst.Cells[rowCounter, 7] = collectionCounts["PctChgLatestVsAvg"];

    rowCounter++;
}

excelApp.Visible = true;
4

1 に答える 1

2

私の知る限り、提供されたデータに基づいて、期待どおりに機能しています。これは、以下のようなことをしているからです。

SELECT ((5229 - 5249)/5249)

最初の数値が2番目の数値よりも小さいため、常に「0」を返します。

編集:

SELECT(CAST((5229-5249)AS FLOAT)/ CAST(5249 AS FLOAT))

于 2012-05-07T19:40:17.690 に答える