如何为每行添加具有相同值的列?

Sco*_*ott 3 sql sql-server union group-by

我被要求对我们的数据库进行搜索,并解释5个不同年龄段的客户数量.我知道我可以运行相同的查询五次.但是,我希望能够创建一个可以完成整个工作的查询.

据我所知,我需要做5个查询,然后使用"UNION"连接不同的查询.

问题是,对于每个查询,我想添加一个显示"年龄范围"的列,然后放置一些文本来命名该组.

我想出的SQL是:

SELECT     COUNT(CLIENT_ID) AS Client_Count, "0 to 19" AS [Age Group]
FROM         dbo.CLIENTS
WHERE     (DATEDIFF(year, DOB, GETDATE()) BETWEEN 0 AND 19)
Run Code Online (Sandbox Code Playgroud)

虽然我希望这会起作用,但它希望0到19是一个专栏.我怎么能让它知道我只是试图将它传递给固定值?

一旦我开始工作,他们就会喜欢我的价值占总数的百分比.任何帮助表示赞赏.

Jon*_*ood 5

这应该工作.试试单引号.

SQL使用单引号来表示字符串文本.似乎它可以解释双引号,但你有它.


Der*_*omm 5

以下应该给你一个很好的起点我认为:

;with AgeRanges(Low, High) as (
    select 0, 19
    union select 20, 39
    union select 40, 59
    union select 60, 79
    union select 80, 1000
)

select
    count(CLIENT_ID) as Client_Count,
    convert(varchar, Low) + ' to ' + convert(varchar, High) as [Age Group]
from
    dbo.CLIENTS
    inner join AgeRanges
        on  DATEDIFF(year, DOB, getdate()) BETWEEN Low and High
Run Code Online (Sandbox Code Playgroud)