我有从数据库查询的人口普查数据。最终,我将把他放在一张excel枢轴图中。我试图根据他们的opens_date计算总人数(case_num),并且必须在过去的6个月内显示总人数。换句话说,本月第一天的总人口普查是多少。我唯一能做的就是根据Month列计算并显示对程序不熟悉的人数。
以下是我到目前为止编写的代码
IF (OBJECT_ID('tempdb..#CEN') IS NOT NULL) DROP TABLE #CEN;
IF (OBJECT_ID('tempdb..#CENX') IS NOT NULL) DROP TABLE #CENX;
SELECT CASE_NUM,LAST_NAME,FIRST_NAME,CDASSIGN.UNIT_ID,SUB_UNIT_ID,CAUNIT. [DESC],DATE_OPENED,DATE_CLOSED,SUBSTRING(CAST(DATE_OPENED AS NVARCHAR(30)),1,3)
+ '-' + SUBSTRING(CAST(DATE_OPENED AS NVARCHAR(30)),8,4) AS [DATE],
SUBSTRING(CAST(DATE_OPENED AS NVARCHAR(30)),1,3) AS [MONTH],
SUBSTRING(CAST(DATE_OPENED AS NVARCHAR(30)),7,5) AS [YEAR],
CASE WHEN DATE_CLOSED = '1753-01-01' THEN GETDATE()
WHEN DATE_CLOSED <> '1753-01-01' THEN DATE_CLOSED
END AS REAL_DATE_CLOSED,
CASE WHEN UNIT_ID IN (2802,2803) THEN 'QM'
WHEN UNIT_ID = 2801 THEN 'Treatment'
WHEN UNIT_ID = 3602 THEN 'Emer'
WHEN UNIT_ID NOT IN (2801,2802,2803,3602) THEN [DESC]
END AS [PROGRAM_NAME]
INTO #CEN
FROM CDASSIGN
INNER JOIN CDCLIENT ON CDASSIGN.CLIENT_ID = CDCLIENT.ID
INNER JOIN CAUNIT ON CAUNIT.ID = CDASSIGN.UNIT_ID
WHERE UNIT_ID IN (4141)
AND DATE_OPENED >= '1970-01-01'
AND DATE_CLOSED = '1753-01-01'
AND CDASSIGN.VOID_FLAG IS NULL
AND SUB_UNIT_ID IN (111)
ORDER BY CASE_NUM ASC
SELECT *, CONVERT(int,REAL_DATE_CLOSED) - CONVERT(INT,DATE_OPENED) AS DAYS_IN_PROGRAM
INTO #CENX
FROM #CEN
SELECT CASE_NUM,LAST_NAME,FIRST_NAME,UNIT_ID,SUB_UNIT_ID, [DESC],DATE_OPENED,DATE_CLOSED,[MONTH],[YEAR],REAL_DATE_CLOSED, [PROGRAM_NAME],DAYS_IN_PROGRAM
FROM #CENX