Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要从更复杂的查询中进行计数_Sql_Sql Server_Sql Server 2008_Tsql_Count - Fatal编程技术网

Sql 需要从更复杂的查询中进行计数

Sql 需要从更复杂的查询中进行计数,sql,sql-server,sql-server-2008,tsql,count,Sql,Sql Server,Sql Server 2008,Tsql,Count,我通常在子查询中使用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.[Le

我通常在子查询中使用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行的结果。我只需要这个号码就可以看了。因此,我想将最终结果限制为一行,以便最终得到:

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

[TotalCount]这对你有用吗

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

您可以删除计数的列。它们实际上不是必需的。

应该能够添加计数(*):


祝您好运。

您可以将下面的示例放在SQL开发人员身上运行以进行计数:

SELECT count(*) as totalCount (*-open a parentheses - your original query -close the parentheses*)

嗨,戈登!!!上次你救了我!太好笑了。很高兴再次见到你。我从您的建议中得到以下错误:“t”多次指定了列“CouponID”。您可以删除计数的所有列。其实没必要。再次谢谢你,戈登!我真的很感谢你的帮助。
SELECT count(*) as totalCount (*-open a parentheses - your original query -close the parentheses*)