簡體   English   中英

在其他位置使用同一SP中的存儲過程的計算列

[英]Use computed column of stored procedure in same SP at other place

我剛剛計算出一個月的工作日數,然后乘以8,並將其存儲為BaseHours 它是一個SP,它返回許多列,包括BaseHours 現在,對於另一列,我想在同一SP中使用此BaseHours ,但出現錯誤。 我正在使用SQL Server。

無效的列名“ basehours”

(case when f.employmenttype = 3 then
   (case when c.paqtyq > BaseHours then
             (c.paqtyq + (c.paqtyq - BaseHours)) * 0.5 
         else
             c.paqtyq 
    end)
   else
      BaseHours 
  end) as bhours

我假設您實際上不是在現有表上創建計算列,而是將計算列作為結果集的一部分返回?

如果是這樣,則需要存儲結果集,直到完成后才返回它。

-- Create and store the result set
SELECT
  ...
INTO
  #temp
FROM
  ...

-- Do your checks
???

-- Return the result set
SELECT
  *
FROM
  #temp


編輯我仍在猜測,但我想我可能理解您的問題...

您不能在select語句的其他地方重復使用別名列,因此這將無法工作...

SELECT
  value * 1.15    AS price,
  price * 0.95    AS discounted_price
FROM
  stock_table

相反,您需要分兩個步驟進行操作...

SELECT
  price,
  price * 0.95    AS discounted_price
FROM
(
  SELECT
    value * 1.15    AS price
  FROM
    stock_table
)
  AS prices

或使用CTE,我認為它更整潔...

WITH
  prices AS
(
  SELECT
    value * 1.15    AS price
  FROM
    stock_table
)
SELECT
  price,
  price * 0.95    AS discounted_price
FROM
  prices

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM