相关疑难解决方法(0)

如何在表达式中重用另一个结果列的结果列

例:

SELECT
   (SELECT SUM(...) FROM ...) as turnover,
   (SELECT SUM(...) FROM ...) as cost,
   turnover - cost as profit
Run Code Online (Sandbox Code Playgroud)

当然这是无效的(至少在Postgres中)但如何在查询中实现相同而不重写子查询两次?

sql postgresql subquery

47
推荐指数
4
解决办法
8万
查看次数

如何在sql中重用子查询?

我有如下查询

select columns
from (select columns1
      from result_set
      where condition_common and condition1) as subset1
      join
      (select columns2
       from result_set
       where condition_common and condition2) as subset2 
      on subset1.somekey = subset2.somekey
Run Code Online (Sandbox Code Playgroud)

我想以某种方式重用

select columns
from result_set
where condition_common
Run Code Online (Sandbox Code Playgroud)

我已经过度简化了上面的查询,但上面的选择实际上是庞大而复杂的.我不想承担确保两者同步的负担

我没有任何以编程方式重用它的方法.排除了T-SQL.我只能写简单的查询.这是应用限制.

有没有办法在单个语句中重用相同的子查询

sql t-sql sql-server subquery

12
推荐指数
1
解决办法
8212
查看次数

避免重复引用多个连接表的子查询

我有一个子查询(LastActivityOn),我想在三个地方使用,我的投影(SELECTed输出),ORDER BY和WHERE子句.

SELECT TOP 175
  (SELECT MAX(ActivityDate) FROM (VALUES
    (UserRegistration.CreatedOn),
    (UserRegistration.ActivatedOn),
    (UserRegistration.LastLoginOn),
    (UserRegistration.UpdatedOn),
    (UserProfile.LastPostedOn)) AS AllDates(ActivityDate)) LastActivityOn,
  UserRegistration.FirstName,
  UserRegistration.LastName,
  [15 more columns of various calculated distances, coalesces, etc...]
FROM
  UserRegistration
  INNER JOIN UserProfile ON UserRegistration.Id = UserProfile.RegistrationId
  INNER JOIN (
    SELECT PostalCode, GeoCenter, PrimaryCity, StateOrProvince
    FROM PostalCodes 
    WHERE @OriginPostalCode IS NULL OR PostalCodes.GeoCenter.STDistance(@OriginPoint) < @WithinMeters
  ) AS ProximalPostalCodes ON ProximalPostalCodes.PostalCode = UserRegistration.PostalCode
  [7 more joins including full-text queries]
WHERE
  LastActivityOn > @OldestUserToSearch AND
  [20 more lines of filtering …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

4
推荐指数
1
解决办法
4212
查看次数

标签 统计

sql ×3

sql-server ×2

subquery ×2

t-sql ×2

postgresql ×1