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