2

クエリに基づいて3つの変数を設定するストアドプロシージャを作成していMAXますが、それらの値を返す必要があります。一時テーブルを使用せずにこれを実行しようとしていますが、次のエラーが発生しますIncorrect styntax near ')'

SELECT MAX(PermissionID)
FROM (SELECT @ContactPermission As PermissionID UNION ALL
      SELECT @GroupPermission As PermissionID)

私も試しました

SELECT MAX((SELECT @ContactPermission UNION ALL SELECT @GroupPermission))

エラーが発生しますCannot perform an aggregate function on an expression containing an aggregate or a subquery.

また、変数をバイパスしてUNION、サブクエリでを使用してみました...

SELECT MAX(PermissionID)
FROM (SELECT PermissionID
        FROM PermissionContact
        WHERE ContactID = @ContactID
      UNION ALL
      SELECT PermissionID
      FROM PermissionGroup
      WHERE GroupID = @GroupID)

これはまたIncorrect syntax near ')'

何か考えや提案はありますか?一時テーブルは私の唯一のオプションですか?

4

2 に答える 2

3

派生テーブルにエイリアスを指定する必要があります。

SELECT MAX(PermissionID)
FROM (SELECT @ContactPermission As PermissionID UNION ALL
      SELECT @GroupPermission As PermissionID) as T
于 2011-09-02T23:08:25.360 に答える
1

または、caseステートメントを使用します

Select Case When @ContactPermission > @GroupPermission 
       Then @ContactPermission Else @GroupPermission End PermissionID

また、

SELECT Case When c.PermissionID > g.PermissionId
        Then c.PermissionID Else g.PermissionId End
FROM PermissionContact c Cross Join PermissionGroup g   
Where c.ContactID = @ContactID
    And g.GroupID = @GroupID
于 2011-09-06T13:47:51.380 に答える