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 --<<--
很抱歉打扰你,但我遇到了联合计数方面的问题;我尝试实现我在其他 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 --<<--