Tsql 确定值大于0的列的计数
好的,小伙子们/姑娘们 以下是我的结果集: 这是我想要的最终结果集 为了实现这个结果,我目前正在使用n(3)个子查询。。。这并不理想Tsql 确定值大于0的列的计数,tsql,subquery,aggregate,common-table-expression,having,Tsql,Subquery,Aggregate,Common Table Expression,Having,好的,小伙子们/姑娘们 以下是我的结果集: 这是我想要的最终结果集 为了实现这个结果,我目前正在使用n(3)个子查询。。。这并不理想 declare @userId int = 436 select (select count(PRODUCT_ID) from sl_suggested_asset where PRODUCT_ID > 0 and user_id = @userId) As 'PRODUCT_ID', (select count(DIGI_DOC_ID)
declare @userId int = 436
select
(select count(PRODUCT_ID) from sl_suggested_asset where PRODUCT_ID > 0 and user_id = @userId) As 'PRODUCT_ID',
(select count(DIGI_DOC_ID) from sl_suggested_asset where DIGI_DOC_ID > 0 and user_id = @userId) As 'DIGI_DOC_ID',
(select count(QR_CODE_ID) from sl_suggested_asset where qr_code_id > 0 and user_id = @userId) As 'QR_CODE_ID'
我想使用的是cte
或aggregate
我是这么想的
select count(product_id), count(DIGI_DOC_ID), count(qr_code_id), user_id
from sl_suggested_asset
where user_id = 436
group by user_id
但这给了我行的总数
所以应该使用我的having
子句,但这意味着我需要使用适当的groupby谓词
。。。这就是我被困的地方
下面是一些我尝试过的例子
select
count(PRODUCT_ID) As 'PRODUCT_ID'
, count(DIGI_DOC_ID) As 'DIGI_DOC_ID'
, count(QR_CODE_ID) As 'QR_CODE_ID'
, user_id
from sl_suggested_asset
where
PRODUCT_ID > 0
or
DIGI_DOC_ID > 0
or
QR_CODE_ID > 0
and
user_id = 436
group by user_id
我得到
。。。这里我更改where
子句条件的顺序
select
count(PRODUCT_ID) As 'PRODUCT_ID'
, count(DIGI_DOC_ID) As 'DIGI_DOC_ID'
, count(QR_CODE_ID) As 'QR_CODE_ID'
, user_id
from sl_suggested_asset
where
user_id = 436
and
PRODUCT_ID > 0
or
DIGI_DOC_ID > 0
or
QR_CODE_ID > 0
group by user_id
。。。我得到了和上面一样的结果
。。。现在我将where
子句更改为=0
,并得到相同的结果,这意味着where
子句被完全忽略
select
count(PRODUCT_ID) As 'PRODUCT_ID'
, count(DIGI_DOC_ID) As 'DIGI_DOC_ID'
, count(QR_CODE_ID) As 'QR_CODE_ID'
, user_id
from sl_suggested_asset
where
user_id = 436
and
PRODUCT_ID = 0
or
DIGI_DOC_ID = 0
or
QR_CODE_ID = 0
group by user_id
。。。最后,如果我将或
s更改为和
s,我将得到零结果
select
count(PRODUCT_ID) As 'PRODUCT_ID'
, count(DIGI_DOC_ID) As 'DIGI_DOC_ID'
, count(QR_CODE_ID) As 'QR_CODE_ID'
, user_id
from sl_suggested_asset
where
user_id = 436
and
PRODUCT_ID = 0
and
DIGI_DOC_ID = 0
and
QR_CODE_ID = 0
group by user_id
只需在查询中使用一些CASE语句即可
选择总和(
案例
当产品ID>0时
那么1
其他0
结束
)作为产品标识,
总数(
案例
当数字文档ID>0时
那么1
其他0
结束
)作为数字文档ID,
总数(
案例
当QR_代码\u ID>0时
那么1
其他0
结束
)作为QR\U代码\U ID
来自sl_建议的_资产
其中USER_ID=436
祝你今天愉快 只需在查询中使用一些CASE语句即可
选择总和(
案例
当产品ID>0时
那么1
其他0
结束
)作为产品标识,
总数(
案例
当数字文档ID>0时
那么1
其他0
结束
)作为数字文档ID,
总数(
案例
当QR_代码\u ID>0时
那么1
其他0
结束
)作为QR\U代码\U ID
来自sl_建议的_资产
其中USER_ID=436
祝你今天愉快 或case
表达式。或case
表达式。