0

この UDF の作成方法がわかりません。既存の質問を読みましたが、構文がわかりません。

このクエリをビューとして保存したいのですが、宣言が既にあるため保存できません

DECLARE @STARTDATE DATETIME
DECLARE @ENDDATE DATETIME

SELECT @ENDDATE = CAST(CONVERT(CHAR(10), GETDATE(), 101)+' 00:00:00' AS DATETIME)
SELECT @STARTDATE = DATEADD(D, -1, @ENDDATE)--'-7'
SELECT @ENDDATE = CAST(CONVERT(CHAR(10), GETDATE(), 101)+' 23:59:59' AS DATETIME)

SELECT
    LTRIM(CIJ.ORDERACCOUNT) 'ACCOUNT'
    ,LTRIM(CIJ.SALESID) 'TOMKIN ORDER #'
    ,LTRIM(CIJ.INVOICEID) 'TOMKIN INVOICE #'
    ,CIJ.PURCHASEORDER 'YOUR ORDER #'
FROM 
    CUSTINVOICEJOUR CIJ
WHERE 
    CIJ.INVOICEDATE >= @STARTDATE AND CIJ.INVOICEDATE <= @ENDDATE
ORDER BY 
    CIJ.INVOICEDATE,CIJ.INVOICEID

どんな援助でも大歓迎です

4

1 に答える 1

0

ビューに変換されたクエリを次に示します。パラメータをビューに渡すことはできず、順序を指定できないことに注意してください。

CREATE VIEW Makdaddy ([ACCOUNT], [TOMKIN ORDER #], [TOMKIN INVOICE #], [YOUR ORDER #])
AS
SELECT
     LTRIM(CIJ.ORDERACCOUNT) 'ACCOUNT'
   , LTRIM(CIJ.SALESID) 'TOMKIN ORDER #'
   , LTRIM(CIJ.INVOICEID) 'TOMKIN INVOICE #'
   , CIJ.PURCHASEORDER 'YOUR ORDER #'
FROM CUSTINVOICEJOUR CIJ
WHERE CIJ.INVOICEDATE >= DATEADD(day,-14,GETDATE())
  AND CIJ.INVOICEDATE <= GETDATE()

ビューを呼び出すと、列を並べ替えたり、追加のフィルター処理を実行したりできます。

SELECT *
FROM Makdaddt
ORDER BY [ACCOUNT]

udf に変換されたクエリを次に示します。開始日が変わる可能性があるため、これはおそらくより良いアプローチです。

CREATE FUNCTION dbo.Makdaddy (@StartDate DATETIME)
RETURNS TABLE
AS
RETURN 
(
  SELECT
       LTRIM(CIJ.ORDERACCOUNT) 'ACCOUNT'
     , LTRIM(CIJ.SALESID) 'TOMKIN ORDER #'
     ,  LTRIM(CIJ.INVOICEID) 'TOMKIN INVOICE #'
     , CIJ.PURCHASEORDER 'YOUR ORDER #'
  FROM CUSTINVOICEJOUR CIJ
  WHERE CIJ.INVOICEDATE >= @StartDate
    AND CIJ.INVOICEDATE <= GETDATE()
);
于 2013-02-20T02:01:43.557 に答える