【发布时间】:2014-05-16 09:21:13
【问题描述】:
我有以下存储过程,到目前为止工作正常。
有没有更快/更好的方法来写这个,这样我就不必为每个 Select 添加相同的 From 行?
我的存储过程:
ALTER PROCEDURE [dbo].[CountEsc]
@date0 nvarchar(20),
@date1 nvarchar(20),
@date2 nvarchar(20),
@date3 nvarchar(20),
@date4 nvarchar(20),
@date5 nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date0+'%'
UNION ALL
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date1+'%'
UNION ALL
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date2+'%'
UNION ALL
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date3+'%'
UNION ALL
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date4+'%'
UNION ALL
SELECT COUNT(*) AS groupCount
FROM Log_Esc
WHERE dateEsc LIKE @date5+'%'
FOR XML PATH(''), ROOT('ranks')
END
我生成的 XML:
<ranks>
<groupCount>0</groupCount>
<groupCount>5</groupCount>
<groupCount>3</groupCount>
<groupCount>6</groupCount>
<groupCount>1</groupCount>
<groupCount>0</groupCount>
</ranks>
【问题讨论】:
-
日期总是一样长吗?日期总是不同的吗?
-
是的,日期总是相同的长度(格式:yyyy-mm,例如 2014-04)并且总是不同的。
-
你能发布样本数据和预期结果的模拟吗?
标签: sql sql-server select union union-all