SQL查询添加一个大小写为行的SUM的列

时间:2013-03-07 13:58:39

标签: tsql

如果下面的代码冒犯了任何人作为专业人士,请让我事先道歉,现在回答问题: 在完成下面的位之后,它会准确地吐出我正在寻找的内容,如果列有一个字符串我得到1即使不是零。我的目的是添加第7列添加这些列,以便我可以将其汇总到报表中的等式中并将其与另一列进行比较。我确信在查询中可以做到,我只是不知道如何。 服务器是sql 2008

    select CASE
WHEN [1  First Name] = ''
THEN 1
ELSE 0
    END as "First Name 1",
    CASE
WHEN [1  Last Name] = ''
THEN 1
ELSE 0
    END as "Last Name 1",
    CASE
WHEN [2  First Name] = ''
THEN 1
ELSE 0
    END as "First name 2",
    CASE
WHEN [2  Last Name] = ''
THEN 1
ELSE 0
    END as "Last Name 2",
    CASE
WHEN [3  First Name] = ''
THEN 1
ELSE 0
    END as "First Name 3",
    CASE
WHEN [3  Last Name] = ''
THEN 1
ELSE 0
    END as "Last Name 3"
    FROM
    member

2 个答案:

答案 0 :(得分:3)

这将为所有行和列提供1s

SELECT
    X.*,
    "First Name 1"+
        "Last Name 1"+
        "First name 2"+
        "Last Name 2"+
        "First Name 3"+
        "Last Name 3" AS TheSum
FROM
    (
    SELECT
        CASE WHEN [1  First Name] = '' THEN 1 ELSE 0 END as "First Name 1",
        CASE WHEN [1  Last Name] = '' THEN 1 ELSE 0 END as  "Last Name 1",
        CASE WHEN [2  First Name] = '' THEN 1 ELSE 0 END as "First name 2",
        CASE WHEN [2  Last Name] = '' THEN 1 ELSE 0 END as  "Last Name 2",
        CASE WHEN [3  First Name] = '' THEN 1 ELSE 0 END as "First Name 3",
        CASE WHEN [3  Last Name] = '' THEN 1 ELSE 0 END as  "Last Name 3"
    FROM
        member
    ) X

答案 1 :(得分:2)

除非我遗漏了某些内容,否则您可以将当前查询放在子查询中,然后添加一个包含总数的列:

select "First Name 1",
    "Last Name 1",
    "First name 2",
    "Last Name 2",
    "First Name 3",
    "Last Name 3",
    ("First Name 1" +"Last Name 1"+"First name 2"+"Last Name 2"+"First Name 3"+"Last Name 3") As total
from
(
    select CASE
            WHEN [1  First Name] = '' THEN 1 ELSE 0
        END as "First Name 1",
        CASE
            WHEN [1  Last Name] = '' THEN 1 ELSE 0
        END as "Last Name 1",
        CASE
            WHEN [2  First Name] = '' THEN 1 ELSE 0
        END as "First name 2",
        CASE
            WHEN [2  Last Name] = '' THEN 1 ELSE 0
        END as "Last Name 2",
        CASE
            WHEN [3  First Name] = '' THEN 1 ELSE 0
        END as "First Name 3",
        CASE
            WHEN [3  Last Name] = '' THEN 1 ELSE 0
        END as "Last Name 3"
    FROM member
) m