열을 문자열 목록으로 바꾸는 예가 있지만 내 사례가 다르다고 생각합니다.표의 2 열에서 쉼표로 구분 된 목록을 얻는 방법
은 내가 이런 일을 좀하고 싶습니다 아래의 디스크 공간 성장과 테이블을 모니터링하는 프로젝트를하고있는 중이 야 : 나는 [다음 자동 증가]를 얻을 수 있었다
Drive [Next Autogrowth] [DB Files]
F Database IntEng2 will grow 2 GB in 27 Weeks Data
G N/A Transaction Log
H N/A Data, Transaction Log
I N/A TempDB Data, TempDB Transaction Log
하지만 난 고민하고 [DB 파일] 열.
도와 주시겠습니까?
1) when in the FILE_TYPE column there is ROW
A) when in the DATABASENAME column you have "tempdb" - add "TempDB Data" to the [DB Files] ELSE write "Data"
2) when in the FILE_TYPE column there is LOG
A) when in the DATABASENAME column you have "tempdb" - add "TempDB Transaction Log" to the [DB Files] ELSE write "Transaction Log"
표는 다음과 같습니다 :
SET NOCOUNT ON
DECLARE @T TABLE(
DRIVE NCHAR(1)
,FILE_TYPE NVARCHAR(20)
,DATABASENAME NVARCHAR(100)
,AUTOGROWTH_IN_MB INT
,WEEKS_TO_AUTOGROWTH INT
,MONTHS_TO_AUTOGROWTH INT
)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('F','ROWS','Bocss2',1024,218,49)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('F','ROWS','IntEng2',2048,27,7)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('H','ROWS','Shop',64,0,0)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('G','LOG','Bocss2',2048,147,87)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('G','LOG','IntEng2',1000,254,133)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('G','LOG','Shop',64,0,0)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('H','LOG','Bocss2',2014,147,87)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('H','LOG','IntEng2',512,255,133)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('I','ROWS','tempdb',1024,2046,614)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('I','ROWS','tempdb',1024,2046,682)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('I','ROWS','tempdb',1024,2046,613)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('I','ROWS','tempdb',1024,2046,682)
INSERT INTO @T (DRIVE,FILE_TYPE,DATABASENAME,AUTOGROWTH_IN_MB,WEEKS_TO_AUTOGROWTH,MONTHS_TO_AUTOGROWTH) VALUES('G','LOG','tempdb',1024,2,1)
SELECT * FROM @T
내가 지금 가지고하는 것은 :
는 따라이 규칙이 있습니다
;WITH R1 AS (
select
*
,the_closest_event=ROW_NUMBER() OVER (PARTITION BY DRIVE ORDER BY
CASE WHEN (WEEKS_TO_AUTOGROWTH < CAST(MONTHS_TO_AUTOGROWTH * 4.3 AS INT)) THEN
WEEKS_TO_AUTOGROWTH ELSE MONTHS_TO_AUTOGROWTH
END)
,NextAutoGrowth= CASE WHEN (DATABASENAME = 'tempdb')
OR (FILE_TYPE = 'LOG') THEN 'N\A'
ELSE
CASE WHEN (WEEKS_TO_AUTOGROWTH < CAST(MONTHS_TO_AUTOGROWTH * 4.3 AS INT)) THEN --4.3 BECAUSE 1 MONTH = 4.3 WEEKS
CASE WHEN (WEEKS_TO_AUTOGROWTH > 0) THEN
'Database ' + DATABASENAME + ' will grow ' +
CASE WHEN (AUTOGROWTH_IN_MB >= 1024) THEN -- 1 GB
CAST(CAST(CAST (AUTOGROWTH_IN_MB/1024.00 AS NUMERIC(18,2))AS REAL) AS VARCHAR) + ' GB in '
ELSE -- use MB
CAST (AUTOGROWTH_IN_MB AS VARCHAR) + ' MB in '
END /*case autogrowth is greater than 1 GB*/
+ CAST (WEEKS_TO_AUTOGROWTH AS VARCHAR) + ' Weeks'
ELSE 'N\A'
END /*case number of weeks > 0*/
ELSE
CASE WHEN (MONTHS_TO_AUTOGROWTH > 0) THEN
'Database ' + DATABASENAME + ' will grow ' +
CASE WHEN (AUTOGROWTH_IN_MB >= 1024) THEN -- 1 GB
CAST(CAST(CAST (AUTOGROWTH_IN_MB/1024.00 AS NUMERIC(18,2))AS REAL) AS VARCHAR) + ' GB in '
ELSE -- use MB
CAST (AUTOGROWTH_IN_MB AS VARCHAR) + ' MB in '
END /*case autogrowth is greater than 1 GB*/
+ CAST (MONTHS_TO_AUTOGROWTH AS VARCHAR) + ' Months'
ELSE 'N\A'
END /*case number of months > 0 */
END /*CASE - weeks or months */
END /*case when it is tempdb */
from @T
)
SELECT
* FROM R1
입니다 - 학장 감사 –