【问题标题】:How to place subquery in SQL Server 2008如何在 SQL Server 2008 中放置子查询
【发布时间】:2018-08-30 19:45:08
【问题描述】:

我有一个主 SQL 查询,它返回日期之间的库存数量,我还需要返回日期为日期的库存以及日期之间的结果。

主要查询:

SELECT 
    TT.TranRId, MAX(TT.TInQty) AS InQty, MAX(TT.TOutQty) AS OutQty
FROM
    TReg TR, TTrans TT
WHERE 
    TR.TRegId = TT.TrRegId
    AND TT.Stid = 2
    AND TR.TransDate BETWEEN '2018-08-25' AND '2018-08-28'
GROUP BY 
    TT.TranRId 
ORDER BY 
    TT.TranRId

子查询:

(SELECT TT.TransRId, (SUM(TT.TInQty) - SUM(TT.TOutQty)) 
FROM TTrans TT, TReg TR
WHERE TR.TransDate <= '2018-08-24' 
  AND TR.TRegId = TT.TrRegId
  AND TT.Stid = 2 GROUP BY TT.TranRId) --AS Stock

请帮助我应该在我的主查询中包含我的子查询

如下获取输出:

TransRId    Stock   InQty   OutQty
----------------------------------
41          700     1       1000
42          800     5       500

【问题讨论】:

  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它
  • 您好,欢迎来到 SO。除了上面的准确建议之外,如果我们有更多的细节可以帮助您找到答案,那将会很有帮助。这是一个很好的起点。spaghettidba.com/2015/04/24/…
  • 你想达到什么目的?总计?

标签: sql-server sql-server-2008 subquery


【解决方案1】:

我不确定我是否 100% 关注您的问题,如果您只是想将其作为子查询加入,那么下面的逻辑应该可以工作。

SELECT TT.TranRId
    ,MAX(TT.TInQty) AS InQty
    ,MAX(TT.TOutQty) AS OutQty
    ,Stock.[Sum]
FROM TReg TR
LEFT JOIN TTrans TT
    ON TR.TRegId = TT.TrRegId
LEFT JOIN (
    SELECT TT.TransRId
        ,(SUM(TT.TInQty) - SUM(TT.TOutQty)) as Sum
    FROM TTrans TT
    LEFT JOIN TReg TR
        ON TR.TRegId = TT.TrRegId
    WHERE TR.TransDate <= '2018-08-24'
        AND TT.Stid = 2
    GROUP BY TT.TranRId
    ) AS Stock
    ON Stock.TranRId = TT.TranRId
WHERE TT.Stid = 2
    AND TR.TransDate BETWEEN '2018-08-25' AND '2018-08-28'
GROUP BY TT.TranRId
ORDER BY TT.TranRId

编辑: 我注意到 tt.TranRId 和 tt.Tran***s***RId 如果这不是拼写错误,则需要更正,如果不是,我的答案将不适合您。

如果您需要特定日期,包括连接逻辑中的日期以及 ID 将为您提供适当的结果...在不知道您的数据集的情况下,我不确定 TranRId 是否是唯一的...抱歉!

【讨论】:

  • @Rennick 感谢您的建议,它对我帮助很大,很抱歉延迟回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
相关资源
最近更新 更多