3

通常、サブクエリ内で COUNT を使用して目的の数を取得しますが、この場合、クエリに含まれる引数が多すぎるため、少し助けが必要です。

SELECT a.[QueueID]
  ,a.[CouponID]
  ,a.[ListingID]
  ,a.[User_ID]
  ,b.[CouponID]
  ,b.[ListingID]
  ,b.[CouponActive] 
  ,b.[CouponExpire] 
  ,b.[IsDeleted]
  ,c.[ListingID]
  ,c.[TypeID]
  ,c.[LevelID]
  ,@passedUserID as User_ID

FROM CouponQueue a
JOIN Coupon b
    on a.CouponID = b.CouponID
JOIN Listing c
    on b.ListingID = c.ListingID

WHERE (a.[User_ID] = @passedUserID)
AND (b.[CouponActive] = 1)
AND (b.[IsDeleted] = 0)
AND (b.[CouponExpire] > DATEADD(dd, -1, GETDATE()) OR b.[CouponExpire] IS NULL)

したがって、このクエリが 7 行の結果を返すとします。VIEW に必要なのはこの番号だけです。したがって、最終的な結果を単一の行に制限して、最終的に次のようにします。

[TotalCount] <-- Field name
[7] <-- Result

しかし、7行のデータではありません..上記のクエリからのカウントが必要です。それでもプラグインして、学ぼうとしています。他のいくつかの例を見ましたが、すべての条件を備えたものは見つかりませんでした...それが私を台無しにしています. 助けてください!

どうもありがとう!

4

3 に答える 3

3

これはあなたのために働きますか?

select count(*) as TotalCOunt from (
SELECT a.[QueueID] /* 
  ,a.[CouponID]
  ,a.[ListingID]
  ,a.[User_ID]
  ,b.[CouponID]
  ,b.[ListingID]
  ,b.[CouponActive] 
  ,b.[CouponExpire] 
  ,b.[IsDeleted]
  ,c.[ListingID]
  ,c.[TypeID]
  ,c.[LevelID]
  ,@passedUserID as User_ID */

FROM CouponQueue a
JOIN Coupon b
    on a.CouponID = b.CouponID
JOIN Listing c
    on b.ListingID = c.ListingID

WHERE (a.[User_ID] = @passedUserID)
AND (b.[CouponActive] = 1)
AND (b.[IsDeleted] = 0)
AND (b.[CouponExpire] > DATEADD(dd, -1, GETDATE()) OR b.[CouponExpire] IS NULL)
) t

カウントの列を削除できます。それらは実際には必要ありません。

于 2013-01-18T03:14:59.813 に答える
0

COUNT(*)を追加するだけでよいはずです:

SELECT COUNT(*) as TotalCount    
FROM CouponQueue a
JOIN Coupon b
    on a.CouponID = b.CouponID
JOIN Listing c
    on b.ListingID = c.ListingID
WHERE (a.[User_ID] = @passedUserID)
AND (b.[CouponActive] = 1)
AND (b.[IsDeleted] = 0)
AND (b.[CouponExpire] > DATEADD(dd, -1, GETDATE()) OR b.[CouponExpire] IS NULL)

幸運を。

于 2013-01-18T03:16:50.623 に答える