SQL 查询 - select 的联合计数

SQL query - Count of union of select

很抱歉打扰你,但我遇到了联合计数方面的问题;我尝试实现我在其他 post 中读到的相同逻辑,但它对我不起作用,请帮忙?

这是我的代码: /数据声明?

/*where i should make the count*/

/*first select*/

UNION

/*second select*/
/*in the where of the second select I have a case with the following data*/
 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

这个重新结果没有计数,所以我想这应该很容易,但我不明白 :S Just a column of elements but I'd like to have the number of the element present in this case 2

非常感谢

如果您想要计算所有选定记录的数量,您可以这样做:

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

在你的 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 --<<--