0
在我的数据库中,我有几千名客户,其中某些标准以不同的间隔发生。每周的每一天都有列(M,Tu,W,Th,F,Sa,Su)。我需要看看一周内有多少天会触发任务。我有下面的查询,但它当然还会每周返回特定的一天以及TotalDays。但是,我需要查看TotalDays,而不是每个单独的一天显示。我怎样才能做到这一点?案例和多列总和
SELECT X.*,M+Tu+W+Th+F+Sa+Su AS TotalDays
FROM
(
SELECT
CASE WHEN [M] = '1' THEN 1 ELSE 0 END as "M",
CASE WHEN [Tu] = '1' THEN 1 ELSE 0 END as "Tu",
CASE WHEN [W] = '1' THEN 1 ELSE 0 END as "W",
CASE WHEN [Th] = '1' THEN 1 ELSE 0 END as "Th",
CASE WHEN [F] = '1' THEN 1 ELSE 0 END as "F",
CASE WHEN [Sa] = '1' THEN 1 ELSE 0 END as "Sa",
CASE WHEN [Su] = '1' THEN 1 ELSE 0 END as "Su"
FROM
Customers
) X
我应该说,这里的数据类型为位,所以我不能只是做天的总和,如下面的,因为这将返回一个错误的数据类型位是和运营商无效。
SELECT
(SUM(M) + SUM(Tu) + SUM(W) + SUM(Th) + SUM(F) + SUM(Sa) + SUM(Su)) as TotalDays
FROM Customers
如果您使用COUNT而不是SUM,该怎么办? – Pieter21 2014-09-22 23:16:23
COUNT不起作用,因为它会为每个客户返回7,因此它会同时计算0和1的值。如上所述,SUM不起作用我得到返回的错误,数据类型位对于求和运算符是无效的。 – aantiix 2014-09-22 23:38:21