【发布时间】:2010-11-16 16:23:12
【问题描述】:
鉴于此查询:
DECLARE
@FROM_DT DATETIME,
@TO_DT DATETIME
BEGIN
SET @FROM_DT = '10/01/2009'
SET @TO_DT = DATEADD(DAY,7,@FROM_DT)
--WHILE (@FROM_DT <= '10/01/2010')
WHILE (@TO_DT < '10/01/2010')
BEGIN
SELECT
CONVERT(CHAR(10),@FROM_DT,101) AS FROM_DT,
CONVERT(CHAR(10),DATEADD(DAY,-1,@TO_DT),101) AS TO_DT,
COUNTRY AS CITZ,
COUNT(SUBJECT_KEY) AS PEOPLE
FROM MYTALE
WHERE DATE_DT >=@FROM_DT
AND DATE_DT <@TO_DT
GROUP BY COUNTRY
SET @FROM_DT = DATEADD(DAY,7,@FROM_DT)
SET @TO_DT = DATEADD(DAY, 7,@TO_DT)
END
END
这是我的结果:
FROM_DT TO_DT COUNTRY PEOPLE
10/01/2009 10/07/2009 A 2
10/01/2009 10/07/2009 B 1
FROM_DT TO_DT COUNTRY PEOPLE
10/08/2009 10/14/2009 A 1
10/08/2009 10/14/2009 C 2
---to
FROM_DT TO_DT COUNTRY PEOPLE
09/23/2010 09/29/2010 A 1
09/23/2010 09/29/2010 B 3
FROM_DT TO_DT COUNTRY PEOPLE
09/30/2010 10/06/2010 C 13
09/30/2010 10/06/2010 D 1
问题:
SQL 中有没有一种方法可以编写如下输出? (我需要整合数据。我可以复制和粘贴它们,但这是 52 周的数据。不是一种有效的方法)请帮忙。我使用 SQL Server 2005 & 2008 版本。
FROM_DT TO_DT COUNTRY PEOPLE
10/01/2009 10/07/2009 A 2
10/01/2009 10/07/2009 B 1
10/08/2009 10/14/2009 A 1
10/08/2009 10/14/2009 C 2
09/23/2010 09/29/2010 A 1
09/23/2010 09/29/2010 B 3
09/30/2010 10/06/2010 C 13
----
从上面的查询中,我将 WHILE (@FROM_DT
【问题讨论】:
标签: sql sql-server-2005 sql-server-2008