Rub*_*zzo 5 sql-server-2008 sql-server query syntax aggregate
我不是数据库管理员——只是一个软件工程师。我想知道是否可以减少以下 T-SQL 查询:
SELECT
SUM(Price * Quantity) as 'Total',
SUM(Price * Quantity) * 0.95,
FROM
SomeTables;
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
SELECT
SUM(Price * Quantity) as 'Total',
'Total' * 0.95,
FROM
SomeTables;
Run Code Online (Sandbox Code Playgroud)
注意:这只是澄清/支持我的问题的示例。我当前的 SQL 查询比这更大更复杂。
没有。只有您的ORDER BY子句可以在同一查询中引用分配的别名。
我建议声明一个计算第一个值的 CTE,然后在针对该 CTE 的查询中计算第二个值。
例如:
WITH totals AS (
SELECT SUM(Price * Quantity) AS Total
FROM SomeTable
)
SELECT
Total
, (Total * 0.95) AS DiscountedTotal
FROM totals;
Run Code Online (Sandbox Code Playgroud)
将 CTE 视为内嵌的一次性视图。它仅对紧随其后的查询有效。在这方面,与使用派生表或实际视图执行相同的操作或像在原始查询中那样计算总数两次相比,它不会给您带来任何性能优势。
当然,与在两个不同的查询中计算两次总数相比,使用 CTE确实具有优势,而且它看起来确实比所有其他方法更干净。
| 归档时间: |
|
| 查看次数: |
4520 次 |
| 最近记录: |