2015-10-13 32 views
1

我有一種情況,我可以在查詢中保存大量重複的文本,但如果我使用某個功能,但是在此站點上我無權在服務器上創建功能。查詢中沒有創建函數的SQL Server函數類似於行爲?

它有沒有辦法查詢的身體已經定義一個函數,然後從查詢調用自身呢?

希望我正確發佈以下精簡代碼。真正的查詢調用兩個函數,按年份計算,按年計算收入。

-- Function 
alter function PetRockCountByYear 
    (@Company varchar(50), @DateFrom varchar(20), @DateTo varchar(20)) 
RETURNS varchar(50) 
AS 
begin 
    return (select isnull(SUM(transact.qty), 0) 
      from TRANSACT 
      inner join CATALOG on transact.ITEM_NO = catalog.ITEM_NO 
      where transact.TRAN_DATE >= @DateFrom 
       and transact.TRAN_DATE <= @DateTo 
       and transact.ITEM_NO = 'PetRock' 
       and @Company = transact.company 
       and transact.ITEM_NO = catalog.ITEM_NO) 
end 

-- Simplified Query Below 
select distinct 
    company.account, company.COMPANY, 
    company.STATUS, company.code, 
    -- Report counts from 1970 - 2015 
    (select dbo.PetRockCountByYear(company.COMPANY, '01/01/1970', '12/31/1970')) as '#1970', 
    (select dbo.PetRockCountByYear(company.COMPANY , '01/01/1971', '12/31/1971')) as '#1971' 
from 
    TRANSACT 
Inner join 
    invoices on transact.inv_no = invoices.inv_no 
Inner join 
    COMPANY on invoices.COMPANY = company.company 
where 
    ITEM_NO = 'PetRock' 
order by 
    company.ACCOUNT  

回答

相關問題