【问题标题】:Need to add a calculated field using T-SQL需要使用 T-SQL 添加计算字段
【发布时间】:2013-06-07 21:30:11
【问题描述】:

我有一个要添加计算字段的查询。我需要添加 2013 年的预计销售额。计算将是当前月数除以年度总销售额乘以 12。我有一个尚未在查询中的 FiscalMonthNum 字段。有人可以告诉我如何添加我需要的字段吗?

SELECT
    a.Vendor,
    vn.ACNAME AS Vendor_Name,
    a.FiscalYear,
    a.QtySold,
    a.ExtCost
FROM
    dbo.S2K_VEND vn
    INNER JOIN
(SELECT
    sd.IFPRVN AS Vendor,
    fc.FiscalYear,
    SUM(sd.SBQSHP) AS QtySold,
    SUM(sd.SBEPRC) AS ExtCost
FROM
    dbo.SalesData sd
    LEFT OUTER JOIN dbo.FiscalCalendar fc ON fc.FiscalDate = sd.SBINDT
WHERE
    sd.SBTYPE = 'O'
AND
    sd.SBINDT > '2011-12-31'
AND
    sd.SBCLS NOT IN ('1500')
GROUP BY
    sd.IFPRVN,
    fc.FiscalYear
)a
ON vn.ACVEND = a.Vendor
GROUP BY
    a.Vendor,
    vn.ACNAME,
    a.FiscalYear,
    a.QtySold,
    a.ExtCost

【问题讨论】:

  • FiscalMonthNum 来自哪个表?

标签: tsql sql-server-2012-express


【解决方案1】:

以下内容可以解决问题吗?销售额除以最大月份数,然后乘以 12?

SELECT
    a.Vendor,
    vn.ACNAME AS Vendor_Name,
    a.FiscalYear,
    a.QtySold,
    a.ExtCost,
    a.PredictedQtySold,
    a.PredictedExtCost
FROM
    dbo.S2K_VEND vn
    INNER JOIN
(SELECT
    sd.IFPRVN AS Vendor,
    fc.FiscalYear,
    12 * (SUM(sd.SBQSHP)/MAX(FiscalMonthNumber)) AS PredictedQtySold,
    12 * (SUM(sd.SBEPRC)/MAX(FiscalMonthNumber)) AS PredictedExtCost,
    SUM(sd.SBQSHP) AS QtySold,
    SUM(sd.SBEPRC) AS ExtCost
FROM
    dbo.SalesData sd
    LEFT OUTER JOIN dbo.FiscalCalendar fc ON fc.FiscalDate = sd.SBINDT
WHERE
    sd.SBTYPE = 'O'
AND
    sd.SBINDT > '2011-12-31'
AND
    sd.SBCLS NOT IN ('1500')
GROUP BY
    sd.IFPRVN,
    fc.FiscalYear
)a
ON vn.ACVEND = a.Vendor
GROUP BY
    a.Vendor,
    vn.ACNAME,
    a.FiscalYear,
    a.QtySold,
    a.ExtCost
;

【讨论】:

  • 必须是 2013 年的。
  • 你的意思是这样的:PredictedExtCost = CASE WHEN fc.FiscalYear = '2013/2014' THEN 12 * (SUM(sd.SBEPRC)/MAX(FiscalMonthNumber)) ELSE NULL END
猜你喜欢
  • 2021-04-07
  • 2015-01-14
  • 2019-02-04
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
相关资源
最近更新 更多