SQL查询-select的并集计数

SQL查询-select的并集计数,sql,sql-server,count,union,Sql,Sql Server,Count,Union,很抱歉打扰你,我对工会计数有问题;我试图实现我在其他帖子中读到的相同逻辑,但它对我不起作用,请提供一些帮助 这是我的代码: /申报资料 这个结果不需要计算,所以我想这应该很容易,但我不明白:S 提前非常感谢如果您试图获得所有选定记录的计数,您可以执行以下操作: SELECT COUNT(*) FROM ( SELECT First... UNION SELECT Second... ) AS CountTable 只需将整个查询包装在另一个SELECT语句中,然后从中

很抱歉打扰你,我对工会计数有问题;我试图实现我在其他帖子中读到的相同逻辑,但它对我不起作用,请提供一些帮助

这是我的代码: /申报资料

这个结果不需要计算,所以我想这应该很容易,但我不明白:S


提前非常感谢

如果您试图获得所有选定记录的计数,您可以执行以下操作:

SELECT COUNT(*) FROM
(
    SELECT First...
    UNION
    SELECT Second...
) AS CountTable

只需将整个查询包装在另一个SELECT语句中,然后从中计数。

如果您试图获得所选所有记录的计数,可以执行以下操作:

SELECT COUNT(*) FROM
(
    SELECT First...
    UNION
    SELECT Second...
) AS CountTable

只需将整个查询包装在另一个SELECT语句中,然后从那里开始计数。

您可以尝试将其包装在SELECT语句中

SELECT t.CompanyID, COUNT(*)
FROM (YOUR UNION QUERY) t
GROUP BY t.CompanyID

您可以尝试将其包装为“选择”

SELECT t.CompanyID, COUNT(*)
FROM (YOUR UNION QUERY) t
GROUP BY t.CompanyID

在where中使用case语句不应该弄乱语法。可能是别的原因

确保在执行子查询时为其指定别名

SELECT COUNT(*)
FROM (
    /*first select*/
    UNION
    /*second select*/
    WHERE
    CASE
      WHEN ((@case='other') 
            AND (cfv.value LIKE '%,' + CAST(@today AS VARCHAR)
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR) 
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0'
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0,1'
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',1'))
      THEN 1
      WHEN ((@case ='zero') AND (cfv.value='0')) THEN 1
      WHEN ((@case ='one') AND  (cfv.value='1' OR cfv.value='0,1')) THEN 1
      ELSE 0
    END = 1
) AS alias --<<--

在where中使用case语句不应该弄乱语法。可能是别的原因

确保在执行子查询时为其指定别名

SELECT COUNT(*)
FROM (
    /*first select*/
    UNION
    /*second select*/
    WHERE
    CASE
      WHEN ((@case='other') 
            AND (cfv.value LIKE '%,' + CAST(@today AS VARCHAR)
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR) 
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0'
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0,1'
                 OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',1'))
      THEN 1
      WHEN ((@case ='zero') AND (cfv.value='0')) THEN 1
      WHEN ((@case ='one') AND  (cfv.value='1' OR cfv.value='0,1')) THEN 1
      ELSE 0
    END = 1
) AS alias --<<--


代码太多,对问题所在和预期输出的解释不够。请编辑您的问题。代码太多,没有足够的解释问题是什么以及您的预期输出应该是什么。请编辑您的问题。我正在尝试这样做,但看到最后一个元素是case,它给了我一个错误:case语句不应该引起问题。查询是否在没有SELECT COUNT*包装器的情况下正常运行并向您提供ID列表?是的,在我输入COUNT*时是否给了我一个异常?您得到的错误是什么?用新的查询和错误文本更新你的问题,这样我们就可以看到发生了什么。只是修复了它-我答案的最后一行第一次没有正确粘贴。最后需要AS别名,就像fqhv在他的回答中一样。我正在尝试这样做,但是看到最后一个元素是case,它给了我一个错误:case语句不应该引起问题。查询是否在没有SELECT COUNT*包装器的情况下正常运行并向您提供ID列表?是的,在我输入COUNT*时是否给了我一个异常?您得到的错误是什么?用新的查询和错误文本更新你的问题,这样我们就可以看到发生了什么。只是修复了它-我答案的最后一行第一次没有正确粘贴。它在结尾需要AS别名,就像fqhv在他的回答中一样。同样的问题,当我关闭第二个select的结尾附近的括号=1时,它会给我一个错误:S查询在不添加计数的情况下运行正常吗?是的,它会:S,并给我在第一个post:Ssame问题中显示的结果,当我关闭第二个select的END=1附近的括号时,它给了我一个错误:S查询在不添加计数的情况下运行正常吗?是的,它给了我:S并给我在我的第一篇帖子中显示的结果:我会尝试让你知道;tkssssnop,但我以另一种方式解决问题,我不记得我是怎么做的,但如果你愿意,我会尽快发布解决方案,我会尝试让你知道;tkssssnop,但我用另一种方式解决问题,我不记得我是怎么做的,但如果你愿意,我会尽快发布解决方案