我正在构建一个带有GROUP BY子句的查询,该子句需要能够仅根据某个条件计算记录(例如,只计算某个列值等于1的记录).
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
Run Code Online (Sandbox Code Playgroud)
该COUNTIF()行明显失败,因为没有调用本机SQL函数COUNTIF,但这里的想法是确定MyColumn值为"1"的所有行的百分比.
有关如何在MS SQL 2005环境中正确实现它的任何想法?
我有一张桌子tbl_LEDGER
+-----------+--------+-----+
| AccountId | GlCode | Amt |
+-----------+--------+-----+
| LAS00001 | INTRAC | 100 |
| LAS00002 | INTRAC | 150 |
| LAS00001 | INTLAS | 200 |
+-----------+--------+-----+
Run Code Online (Sandbox Code Playgroud)
期望的结果:
+-----------+------------+-----------+
| AccountId | intractamt | intlasAmt |
+-----------+------------+-----------+
| LAS00001 | 100 | 200 |
| LAS00002 | 150 | 0 |
+-----------+------------+-----------+
Run Code Online (Sandbox Code Playgroud)
这是我的工作查询:
select accountid,sum(amt) intracamt, (select SUM(amt) from tbl_LEDGER
where GLCode='intlas' and AccountID=intrac.AccountID ) intlasamt
from tbl_LEDGER intrac
where GLCode='intrac' group by AccountID …Run Code Online (Sandbox Code Playgroud)