1

SQLServerで次のクエリを使用しようとしています

SELECT [AL].[Subscriptions].Id,
       [AL].[Subscriptions].name,
       [AL].[Subscriptions].description,
       [AL].[Subscriptions].price,
       [AL].[Subscriptions].iconFileName,
       IIf(a.expiryDate > Now(), 'TRUE', 'FALSE') AS isSubsByUser
FROM   [AL].[Subscriptions]
       LEFT JOIN (SELECT *
                  FROM   [AL].[UserSubscriptions]
                  WHERE  userId = 13259) AS a
         ON Subscriptions.Id = a.itemid; 

しかし、常にエラーが発生します

関数の引数のリストにエラーがあります:'>'が認識されません。クエリテキストを解析できません。

どうすれば解決できますか?

4

1 に答える 1

0

Martin Smithが言ったように、caseステートメントを使用する必要があります。また、派生テーブルで使用しているフィールドは2、3しかないようです。そのため、*は使用しないことをお勧めします。以下に例を示します。

   SELECT [AL].[Subscriptions].Id,
        [AL].[Subscriptions].name,
        [AL].[Subscriptions].description,
        [AL].[Subscriptions].price,
        [AL].[Subscriptions].iconFileName,
        case when a.expiryDate > GetDate() then 'TRUE' else 'FALSE' end AS isSubsByUser
   FROM   [AL].[Subscriptions]
   LEFT JOIN (SELECT expiryDate, itemid 
              FROM   [AL].[UserSubscriptions]
              WHERE  userId = 13259) AS a
     ON Subscriptions.Id = a.itemid; 
于 2012-11-23T18:44:30.873 に答える