궁금한 분은 내가보고 싶었던 날짜를 설정하기 위해 조합 변수를 사용하여 원하는 결과를 얻었습니다. unpivot
과 pivot
테이블의 엉망으로 내가 필요한 방식으로 테이블을 배치하십시오. 당신은 프리젠 테이션의 요구 처리에 더 적합한 다른 계층이없는 -
가
declare @d1 varchar(10) = CAST(DATEADD(dd,-1,CAST(GETDATE() as Date)) as varchar(10))
declare @d2 varchar(10) = CAST(DATEADD(dd,-2,CAST(GETDATE() as Date)) as varchar(10))
declare @d3 varchar(10) = CAST(DATEADD(dd,-3,CAST(GETDATE() as Date)) as varchar(10))
declare @d4 varchar(10) = CAST(DATEADD(dd,-4,CAST(GETDATE() as Date)) as varchar(10))
declare @d5 varchar(10) = CAST(DATEADD(dd,-5,CAST(GETDATE() as Date)) as varchar(10))
declare @d6 varchar(10) = CAST(DATEADD(dd,-6,CAST(GETDATE() as Date)) as varchar(10))
declare @d7 varchar(10) = CAST(DATEADD(dd,-7,CAST(GETDATE() as Date)) as varchar(10))
declare @SQL varchar(8000)
SET @SQL =
'Select
*
From
(
Select
unpvt.[Table]
,unpvt.value
,unpvt.Date
From
ORIGINAL_TABLE
unpivot (
value
for [Table] in (Table_1
,Table_2
,Table_3
,...
,Table_35
)
) unpvt
Where
Date > cast(dateadd(dd,-8,getdate()) as date)
) ref
pivot (sum(ref.value)
for ref.Date in (
[' + @d1 + ']
,[' + @d2 + ']
,[' + @d3 + ']
,[' + @d4 + ']
,[' + @d5 + ']
,[' + @d6 + ']
,[' + @d7 + ']
)
) as pvt'
EXEC(@SQL)
이 데이터베이스 층에서 아래로 일을해야 확실 : 여기
내 코드? SQL에서 필요하다면 - 열과 행 세트가 고정되어 있습니까? SQL은 일반적으로 다양한 수의 열을 가진 결과 세트를 생성하는 것을 원하지 않습니다. 따라서 조정해야하는 경우 제품 별 일 것입니다.이 경우 어떤 데이터베이스 제품을 사용하고 있습니까? [tag : sql] 태그는 표준 SQL 언어 용 태그입니다. –예, SQL 수준에서 수행해야합니다. 그리고 예 (테이블 이름)의 열 수는 고정되어 있으며 마지막 7 일 동안 행 수가 고정됩니다. (테이블은 하루 종일 유지되지만 지난 7 개만 필요합니다.) – Caveman42
출력 열의 * 이름 *이 변경 될 예정입니까? 그것은 또한 SQL이 좋아하는 것이 아닙니다. 그래서, 다시, 어떤 제품을 가지고 일하고 있습니까? –