Sql server 如何使用自定义消息和计数通过MS Sql查询获得输出?

Sql server 如何使用自定义消息和计数通过MS Sql查询获得输出?,sql-server,Sql Server,我想对下面的数据进行MS Sql查询,这些数据可以按我的要求输出 表名:Emp(两列EmpID int,VacantedDateTime) 表数据: 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 Vaca

我想对下面的数据进行MS Sql查询,这些数据可以按我的要求输出

表名:Emp(两列EmpID int,VacantedDateTime) 表数据:

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
我试图提出质疑,但没有成功,请帮助我


提前感谢。

您可以尝试以下查询:-

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

这可能会对您有所帮助。

此脚本正在强制转换datetime to date,以防止任何datetime中出现时间部分。分组时,不同的时间段会导致额外的行

试试这个:

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)

使用
group by vacantedDate
count()
函数。然后,您可以使用
选择case when(count(*)=1),然后使用'One Post emptance on'+cast([VacantEndDate]as nvarchar)
等等。有关更通用的数字到单词功能,请参见此