我们如何通过自定义消息和计数获得 MS Sql 查询的输出?

Posted

技术标签:

【中文标题】我们如何通过自定义消息和计数获得 MS Sql 查询的输出?【英文标题】:How we can get Output by MS Sql query with custom message and count? 【发布时间】:2016-01-20 11:39:29 【问题描述】:

我想对以下数据进行 MS Sql 查询,根据需要提供输出。

表名: Emp(两列 EmpID int, VacantEndDate datetime) 表格数据:

EmpID  |  VacantEndDate
11     |  22-Jun-16
12     |  22-Jun-16
13     |  30-May-15
14     |  30-May-15
15     |  31-Mar-15
16     |  02-Dec-16

MS Sql 按日期查询顺序输出

One Post Vacant on 31-Mar-16
Two Post vacant on 30-May-16
Two Post vacant on 22-Jun-16
One Post Vacant on 02-Dec-16

我尝试查询但没有成功,请帮助我

提前致谢。

【问题讨论】:

使用group by VacantEndDatecount()函数。然后你可以使用select case when (count(*) = 1) then 'One Post Vacant on'+cast([VacantEndDate] as nvarchar)等等。 另见此以获得更通用的数字到单词功能***.com/questions/1673265/… 【参考方案1】:

此脚本将日期时间转换为日期,以防止在任何日期时间中出现时间部分。分组时不同的时间段会导致额外的行。

试试这个:

SELECT 
  CASE COUNT(*)
    WHEN 1 THEN 'One'
    WHEN 2 THEN 'Two'
    WHEN 3 THEN 'Three'
    WHEN 4 THEN 'Four'
    WHEN 5 THEN 'Five'
    WHEN 6 THEN 'Six'
    WHEN 7 THEN 'Seven'
    WHEN 8 THEN 'Eight'
    WHEN 9 THEN 'Nine'
    ELSE 'Ten+' 
    END + 
    ' Post Vacant on ' +
    REPLACE(CONVERT(char(9), CAST(VacantEndDate as date), 6), ' ', '-') 
FROM Emp
GROUP BY CAST(VacantEndDate as date)

【讨论】:

【参考方案2】:

您可以尝试以下查询:-

SELECT CASE WHEN (COUNT(EmpID) = 1) THEN 'One Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 2) THEN 'Two Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 3) THEN 'Three Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 4) THEN 'Four Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 5) THEN 'Five Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 6) THEN 'Six Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 7) THEN 'Seven Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 8) THEN 'Eight Post Vacant on' + cast([VacantEndDate] AS NVARCHAR),
            WHEN (COUNT(EmpID) = 9) THEN 'Nine Post Vacant on' + cast([VacantEndDate] AS NVARCHAR)
FROM Emp
GROUP BY VacantEndDate

这可能对你有帮助。

【讨论】:

以上是关于我们如何通过自定义消息和计数获得 MS Sql 查询的输出?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 SQL Server 性能计数器

自定义SQL Server性能计数器

ros自定义消息

如何在 PHP + MS SQL 应用程序中向用户显示有关维护和夜间作业的消息

如何在 Oracle SQL 中获得过去三天每天的滚动不同计数?

如何在 MS SQL Server 中获得查询计划重用