Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何计算单行中的值?_Sql_Sql Server 2008_Tsql - Fatal编程技术网

Sql 如何计算单行中的值?

Sql 如何计算单行中的值?,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一张这样的桌子: | ID | X1 | X2 | X3 | .. | Xn | +----+----+----+----+----+----+ | 1 | x | '' | x | '' | '' | +----+----+----+----+----+----+ | 2 | '' | '' | x | '' | '' | +----+----+----+----+----+----+ | 3 | x | x | x

我有一张这样的桌子:

    | ID | X1 | X2 | X3 | .. | Xn |
    +----+----+----+----+----+----+
    | 1  | x  | '' | x  | '' | '' |
    +----+----+----+----+----+----+
    | 2  | '' | '' | x  | '' | '' |
    +----+----+----+----+----+----+
    | 3  | x  | x  | x  | '' | x  |
    +----+----+----+----+----+----+
'' = Empty string, not null
现在我想知道第2行、第3行或第n行中有多少个“x”。有没有一个简单的方法来实现这一点


使用MS SQL Server 2008时,请不要以这种方式存储数据。相反,将其存储在XCoord、YCoord和Value的表中。然后,您可以执行以下操作:

SELECT ID,
       (SELECT COUNT(*)
        FROM   (VALUES (X1),
                       (X2),
                       (X3),
                       /* ... */
                       (Xn)) T(X)
        WHERE  X = 'X') AS Num
FROM   YourTable  
SELECT     XCoord, COUNT(Value) AS XTotal
FROM         TicTacTable
WHERE     (Value = 'x')
GROUP BY XCoord

不要以这种方式存储数据。相反,将其存储在XCoord、YCoord和Value的表中。然后,您可以执行以下操作:

SELECT     XCoord, COUNT(Value) AS XTotal
FROM         TicTacTable
WHERE     (Value = 'x')
GROUP BY XCoord

这是什么RDBMS(和版本?)这是家庭作业吗?看起来像是家庭作业。请告诉我们到目前为止你都做了些什么。我今年31岁,不再做家庭作业了只是试着习惯SQL并练习一些自定的练习。事实上,我正在尝试创建一个简单的Tic-Tac-Toe游戏,并希望计算一行中的X(因此,实际上Xn中的n>3是不可能发生的,但我希望在每个列上都没有选择的解决方案)在问题中添加了数据库。这是什么RDBMS(和版本?)这是家庭作业吗?看起来像是家庭作业。请告诉我们到目前为止你都做了些什么。我今年31岁,不再做家庭作业了只是试着习惯SQL并练习一些自定的练习。事实上,我正在尝试创建一个简单的Tic-Tac-Toe游戏,并希望计算一行中的X(因此,实际上Xn中的n>3是不可能发生的,但我希望在每个列上都没有选择的解决方案)将数据库添加到问题中。如果我不想编写每一列,动态SQL是最好的解决方案吗?我只是创建一个while循环,并将所有x列添加到SQL字符串中。“也许有更好的方法?”FeroC——您可以使用动态SQL生成包括所有列的查询,也可以考虑重构,以便将每个值存储在具有列“代码> ID、索引、值< /代码>的表中的自己的行中。您必须编写每一列;如果你是用SQL写的,那就别无选择。如果我不想写每一列,动态SQL会是最好的解决方案吗?我只是创建一个while循环,并将所有x列添加到SQL字符串中。“也许有更好的方法?”FeroC——您可以使用动态SQL生成包括所有列的查询,也可以考虑重构,以便将每个值存储在具有列“代码> ID、索引、值< /代码>的表中的自己的行中。您必须编写每一列;如果在SQL中进行,则别无选择。如果游戏场地在SQL数据库之外,我会这样做,但在这种情况下,游戏直接在数据库上进行。如果游戏场地在SQL数据库之外,我会这样做,但在这种情况下,游戏直接在数据库上进行。