Database Administrator/T-SQL 28

master SP 생성 -> DB별 view 인식 하게 하기

master에 Sp를 생성하고 모든 DB의 객체 view를 인식 할 수 있게 하는 방법. 이렇게 하면 동적 쿼리를 사용하지 않아도 됨. exec sys.sp_MS_marksystemobject '{procedure name}' 어떤 사용자도 호출 할 수 있게 하려면 public에 권한 부여grant execute on object to [public] 등록을 해지 하고 싶다면 ?[SQL 2005 이전 버전 ]sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE update sysobjects set status = 1610612737, base_schema_ver = 0 where name = '{procedure name}' sp_configure..

월에 두번째/세번째 요일 구하기.

업무를 하다보면 월 두번째, 세번째 특정 요일을 구해야 하는 경우가 있다. 여기서는 금요일로 하겠다. declare @dt_getdate dateset @dt_getdate = '2013-03-13'select @dt_getdate select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,@dt_getdate),@dt_getdate) ), 4) 위 쿼리는 해당 월의 첫번째 금요일을 알려준다, 허나 2013년 3월의 경우 3/1일이 금요일 이긴 하지만 주로 처리 되면 2월의 마지막 주가 되서 3/1일이 아닌 3/8일이 결과가 나온다. 이럴 경우, 두번째 금요일, 세번째 금요일도 원하는 결과가 아니다. 그래서 , 구하려고 하는 달의 다음날 첫 일의 금요일을 ..

T-SQL::동적 PIVOT 생성

원문 : http://www.mssqltips.com/sqlservertip/2783/script-to-create-dynamic-pivot-queries-in-sql-server/ 동적으로 PIVOT을 만들 수 있는 방법입니다. 아직도 case 문이 익숙하긴 하지만, 가끔은 오히려 더 복잡해지는 case 문 때문에 PIVOT을 사용해야 한다고 느껴질 때가 있습니다. 아직 PIVOT 익숙하지는 않은데 하다보니 컬럼 고정이 되서 불편한 점이 있는데 이 방법으로 사용하면 좋을 것 같네요. PIVOT 은 행 형태의 반환을 열로 만들어 주는 것입니다. 아래로 테스트할 데이터를 생성 합니다. CREATE TABLE dbo.Products ( ProductID INT PRIMARY KEY, Name NVARCHAR..

Function to return a range of dats - 날짜 범위 펑션

http://www.mssqltips.com/sqlservertip/2800/sql-server-function-to-return-a-range-of-dates/ By: Albert Hetzel 정리 SQL SERVER 2005 이상 일자별 sum, max 등의 집계 쿼리를 할 때 일자의 범위가 모두 포함되기어 표현되어지기를 원할 때가 있다. 그러나 실제 데이터는 일자 범위에 데이터가 없을 수도 있고 있을 수도 있다. 이럴때 어떻게 해야 할까?? 물론, row_number 함수를 사용하여 corss join을 사용하면 가능하다. 그러나 이런 쿼리는 복잡하고 원하는 결과를 나타내지 않을 수도 있다. 여기서는 테이블 함수를 사용하는 방법으로 해결 합니다. 이 함수는 CTE를 사용하여 반복적으로 날짜를 반환 ..