1

異なるテーブルから同じ列を取得したいので、ユーザー関数を使用します。しかし、Returnの前に結果テーブルをソートしたいと思います。このコードでは、一時テーブルを使用してこれを実行しようとしています。sql return:'@Result'の近くの構文が正しくありません。これどうやってするの?

ありがとう

ここにコードがあります:

CREATE FUNCTION sp_GetAllNotConfirmedOrders
()
RETURNS @Result TABLE 
(
    OrderId int,
    CreationDate datetime,
    BusinessName nvarchar(150),
    BusinessPhone nvarchar(20),
    UserType int
)
AS
BEGIN
    DECLARE @TempData TABLE
    (
        OrderId int,
        CreationDate datetime,
        BusinessName nvarchar(150),
        BusinessPhone nvarchar(20),
        UserType int
    )

    INSERT INTO @TempData
        SELECT     Orders.OrderId, ZimmerOrders.CreationDate,Zimmers.OwnerName, Zimmers.PhoneNUmber1, 2
        FROM         Orders INNER JOIN
                  ZimmerOrders ON Orders.OrderId = ZimmerOrders.OrederId INNER JOIN
                  ZimmerRooms ON ZimmerOrders.RoomId = ZimmerRooms.RoomId INNER JOIN
                  Zimmers ON ZimmerRooms.ZimmerId = Zimmers.UserId
        WHERE     (Orders.IsConfirm = 0)

    INSERT INTO @TempData
        SELECT     Orders.OrderId, HotelOrders.CreationDate, Hotels.PhoneNumber1, Hotels.HotelName, 4
        FROM         HotelOrders INNER JOIN
                      HotelRooms ON HotelOrders.RoomId = HotelRooms.RoomId INNER JOIN
                      Hotels ON HotelRooms.HotelId = Hotels.UserId INNER JOIN
                      Orders ON HotelOrders.OrderId = Orders.OrderId
        WHERE     (Orders.IsConfirm = 0)

    SELECT * INTO @Result FROM @TempData ORDER BY CreationDate
    RETURN 
END
4

1 に答える 1

2

次のように実行できます。

INSERT INTO @Result
SELECT OrderId, CreationDate, BusinessName, BusinessPhone, UserType
FROM @TempData
ORDER BY CreationDate
于 2012-05-21T10:30:28.767 に答える