Как посчитать значения в одной строке? - PullRequest
1 голос
/ 09 декабря 2011

У меня есть такая таблица:

    | ID | X1 | X2 | X3 | .. | Xn |
    +----+----+----+----+----+----+
    | 1  | x  | '' | x  | '' | '' |
    +----+----+----+----+----+----+
    | 2  | '' | '' | x  | '' | '' |
    +----+----+----+----+----+----+
    | 3  | x  | x  | x  | '' | x  |
    +----+----+----+----+----+----+
'' = Empty string, not null

Теперь я хочу знать, сколько «х» в строке 2, 3 или n. Есть ли простой способ добиться этого?

Использование MS SQL Server 2008

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011
SELECT ID,
       (SELECT COUNT(*)
        FROM   (VALUES (X1),
                       (X2),
                       (X3),
                       /* ... */
                       (Xn)) T(X)
        WHERE  X = 'X') AS Num
FROM   YourTable  
1 голос
/ 10 декабря 2011

Не храните данные таким образом. Вместо этого сохраните его в таблице XCoord, YCoord, Value. Тогда вы можете сделать что-то вроде:

SELECT     XCoord, COUNT(Value) AS XTotal
FROM         TicTacTable
WHERE     (Value = 'x')
GROUP BY XCoord
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...