如何在sql server中进行计数和求和
我有下表T1如何在sql server中进行计数和求和,sql,sql-server,Sql,Sql Server,我有下表T1 ID Type Amount 1 1 100 2 2 100 3 2 100 4 2 100 5 1 100 6 1 100 7 2 100 8 1 100 9 1 100 我需要的结果如下
ID Type Amount
1 1 100
2 2 100
3 2 100
4 2 100
5 1 100
6 1 100
7 2 100
8 1 100
9 1 100
我需要的结果如下
TotalRecods Type1Recods type2Recods Type1Amount type2Amount
9 5 4 500 400
我正在努力
SELECT COUNT(id) AS TotalRecords ,
COUNT(type) AS Type1Records,
COUNT(type) AS Type2Records,
SUM(Amount ) AS Type1Amount,
SUM(Amount) AS Type2Amount
FROM T1
它回来了
TotalRecords Type1Records Type2Records Type1Amount Type2Amount
9 9 9 900 900
我不知道如何根据类型筛选它。也许是我错过的一个简单的步骤
SELECT
COUNT(*) [TotalRecords],
COUNT(CASE WHEN [Type] = 1 THEN 1 END) [Type1Records],
COUNT(CASE WHEN [Type] = 2 THEN 1 END) [Type2Records],
SUM(CASE WHEN [Type] = 1 THEN [Amount] END) [Type1Amount],
SUM(CASE WHEN [Type] = 2 THEN [Amount] END) [Type2Amount]
FROM
[t];
请注意,若某个类型并没有记录,COUNT将返回0,但SUM的结果将为NULL。如果您还希望从SUM函数得到0结果,则可以像以下那样使用它:
当[Type]=1时,SUMCASE,然后[Amount]否则0结束[Type1Amount]
请注意,若某个类型并没有记录,COUNT将返回0,但SUM的结果将为NULL。如果您还希望从SUM函数得到0结果,则可以像以下那样使用它:
SUMCASE当[Type]=1时,则[Amount]否则0结束[Type1Amount]您可以使用CASE表达式来实现它 质疑
您可以通过使用大小写表达式来实现它 质疑 试试这个:
SELECT COUNT(id) AS TotalRecods ,
(SELECT COUNT(type) FROM T1 WHERE type = 1) AS Type1Recods,
(SELECT COUNT(type) FROM T1 WHERE type = 2) AS Type2Recods,
(SELECT SUM(Amount ) FROM T1 WHERE type = 1) AS Type1Amount,
(SELECT SUM(Amount ) FROM T1 WHERE type = 2) AS Type2Amount
FROM T1
试试这个:
SELECT COUNT(id) AS TotalRecods ,
(SELECT COUNT(type) FROM T1 WHERE type = 1) AS Type1Recods,
(SELECT COUNT(type) FROM T1 WHERE type = 2) AS Type2Recods,
(SELECT SUM(Amount ) FROM T1 WHERE type = 1) AS Type1Amount,
(SELECT SUM(Amount ) FROM T1 WHERE type = 2) AS Type2Amount
FROM T1
如果类型为1,则金额结束为缺失;如果类型为1,则金额结束为缺失;如果类型为1,则金额结束为缺失;如果类型为1,则金额结束为缺失syntax@Jodrell:是的,我知道。是的,但是很晚,总和和计数可以用这个互换syntax@Jodrell:是的,我知道。