sql - 如何获取总行数和特定列的总和
问题描述
这是我的原始查询
SELECT acct_id,
acct_client_short_name,
acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code,
SUM(traded_shrs_num),
SUM(curr_shrs_num) AS c1
FROM (SELECT 'ID900910' AS acct_id,
'CNS Netting' AS acct_client_short_name,
'CNS' AS acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code,
traded_shrs_num,
curr_shrs_num
FROM [csr_staging].[dbo].[fi_impact_source]
WHERE (clearing_code = 'MBS'
OR clearing_code = 'CNS')
AND (SD_ID >= EFF_DT)) a
GROUP BY acct_id,
acct_client_short_name,
acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code;
总行数 = 383 行
我们如何从上述查询中获取总行数?
即select count(*),sum(c1) from query1
?
解决方案
你应该这样写:
SELECT count(*), sum(c1) FROM (SELECT ...) x
换句话说:
SELECT count(*), sum(c1)
FROM (
SELECT acct_id,
acct_client_short_name,
acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code,
SUM(traded_shrs_num) AS c2,
SUM(curr_shrs_num) AS c1
FROM (SELECT 'ID900910' AS acct_id,
'CNS Netting' AS acct_client_short_name,
'CNS' AS acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code,
traded_shrs_num,
curr_shrs_num
FROM [csr_staging].[dbo].[fi_impact_source]
WHERE (clearing_code = 'MBS'
OR clearing_code = 'CNS')
AND (SD_ID >= EFF_DT)) a
GROUP BY acct_id,
acct_client_short_name,
acct_cat_code,
cusip_num,
symbol_code,
product_name,
sec_type_code,
acct_type_code,
ann_int_rate_and_maturity_dt_text,
sd_id,
loc_code,
settled_flag,
td_id,
eff_dt,
clearing_code
) x
这称为使用“派生表”。
推荐阅读
- java - Android如何在底部导航项周围创建圆圈
- c++ - R 到 C++ 代码循环遍历数据帧列表 (Rcpp)
- python - 在 web2py 中无法访问数据库管理
- .net-core - 跨项目的 Nuget 包复制
- javascript - 如何连接和跳过谷歌脚本或谷歌 Excel 中的行
- meteor - 什么是流星生产
- html - Flex 可调整大小的子项无法在 Firefox 中调整大小
- mathjax - mathjax-node:在网页上格式化时的输出与在节点项目中不同
- amazon-web-services - AWS Amplify 在尝试登录时抛出 SerializationException
- objective-c - 如何在 objC 类中使用 swift 类引用,并在之前的 swift 文件中同时使用 objC 引用?