1

これが私のテーブル定義です:

tblTrans

PK - trans_id (int)
   - user_id_fk (int)
   - trans_created (datetime)
   - trans_amount (money)

特定の日のすべての売上データを合計し、次のように返します。NumberOfTransactions,TotalDollars

パラメータとして受け取るストアドプロシージャに移動したい次のSQLクエリがMM/DD/YYYYあります。

クエリは機能しますが、パラメータを渡す方法がわかりません。

SELECT Cast(count(*) as varchar(8)) + ','
                         +  Cast(Sum(trans_amount) as varchar(8)) as SalesData 
FROM PD_Transaction 
WHERE pd_Trans_CreatedOn BETWEEN '20130122' 00:00:00.000' AND '20130122 23:59:59.997'

これをストアドプロシージャとして作成し、日付だけを渡したいと思います。

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

4

3 に答える 3

1

1つの日付のみを渡す場合:

CREATE PROC P @Date DATE
AS BEGIN 
    SELECT Cast(count(*) as varchar(8)) + ',' +  Cast(Sum(trans_amount) as varchar(8)) as SalesData FROM PD_Transaction WHERE pd_Trans_CreatedOn
    BETWEEN CONVERT(datetime, CONVERT(VARCHAR(10), @Date, 121) + ' 00:00:00', 121) and CONVERT(datetime, CONVERT(VARCHAR(10), @Date, 121) + ' 23:59:59', 121)
END
于 2013-01-25T04:34:16.507 に答える
0

クエリからRDBMSとしてSQLServerを使用していることを質問します。ストアドプロシージャは次のとおりです。

CREATE PROC P @startDate DATE, @endDate DATE
AS BEGIN 
    SELECT Cast(count(*) as varchar(8)) + ',' +  Cast(Sum(trans_amount) as varchar(8)) as SalesData FROM PD_Transaction WHERE pd_Trans_CreatedOn
    BETWEEN @startDate and @endDate
END
于 2013-01-25T04:31:25.083 に答える
0

sprocで@StartDateと@EndDateなどの2つのパラメーターを宣言できます。コードで、パラメーターを次のように割り当てます。

DateTime dtStart = new DateTime(2013,01,22);
DateTime dtEnd= new DateTime(2013,01,23);

次に、SQLスクリプトは次のようになります

*.....FROM PD_Transaction WHERE pd_Trans_CreatedOn >= @StartDate AND pd_Trans_CreatedOn < @EndDate*
于 2013-01-25T04:33:59.533 に答える