此查询返回特定日期范围内特定销售人员的"已结算"每日销售额总和:
SELECT SUM(price) as closed_total FROM dbo.Sales WHERE salesperson_ID = @salesperson_ID AND date_ordered BETWEEN @start_date AND @end_date AND closed = 1 GROUP BY date_ordered
输出如下:
daily_total 200 150 325 120 (etc)
我想修改查询以返回一列用于已关闭的销售,一列用于所有销售(相同的查询,但没有'closed = 1'条件),输出如下:
closed_total | all_total 200 | 275 150 | 150 325 | 500 120 | 280 (etc)
我已经尝试使用UNION来组合单独的查询,如下所示:
SELECT SUM(price) as closed_total FROM dbo.Sales WHERE salesperson_ID = @salesperson_ID AND date_ordered BETWEEN @start_date AND @end_date AND closed = 1 GROUP BY date_ordered UNION ALL SELECT SUM(price) as all_total …
我正在使用不支持分析器的SQL Server 2005版本,试图找出如何最好地比较两个存储过程的性能.我已经为每个人执行了执行计划,但我不清楚我应该关注哪些提供的指标.我是否经历并加上各种费用?什么是最好的方法?
提前致谢.
我有一个使用输出参数的存储过程,如下所示:
ALTER PROCEDURE [GetAmount]
(
@orderID [int],
@totalcost decimal(18,2) OUTPUT
)
SELECT @totalcost = cost
FROM mytable
WHERE orderID = @orderID
Run Code Online (Sandbox Code Playgroud)
当我将存储过程拖到设计器上时,designer.cs文件中的结果代码最终会失去精度和比例,如下所示:
[Parameter(DbType="Decimal")] ref System.Nullable<decimal> totalcost
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为产品价格和订单总数之类的东西正在四舍五入(即19.95变为20).
现在,我可以手动更正.cs文件,但我必须记住每次更新时都要这样做.难道我做错了什么?有没有办法改变我的存储过程,使LINQ能够自动检测精度和规模?
我有一个事件表,其中一个字段指定事件发生的频率(以天为单位).我想在给定的日期范围内选择所有事件,包括计算的事件(例如,如果第一个事件日期是2011年1月6日,并且每7天发生一次,你会看到1月13日和1月20日结果).
这是我的事件表的样子:
event_ID INT,
event_title NVARCHAR(50),
first_event_date DATETIME,
occurs_every INT
阅读本文后,似乎最有效的处理方法是使用计数表,但我无法解决如何返回我正在寻找的结果.
假设我的数据看起来像这样:
event_ID | event_title | first_event_date | occurs_every 1 | Event 1 | 1/6/2011 | 7 2 | Event 2 | 1/8/2011 | 3
我正在寻找的结果将是:
event_ID | event_title | event_date | 1 | Event 1 | 1/6/2011 | 2 | Event 2 | 1/8/2011 | 1 | Event 1 | 1/13/2011 | 2 | Event 2 | 1/12/2011 | 2 | Event 2 | 1/16/2011 | 1 …