동적 SQL을 필요로하지 않는 다른 옵션으로, 오직 십자가가 적용 또는 두 개의
그냥 재미를 위해, 나는이 작업을 달성하기 위해 동적 SQL을 사용할 수 있습니다 설명하기 위해 Min, Max 및 Avg를 추가하십시오. 또한 PctOfTotal 또는 Common-Size를 추가했습니다.
Declare @YourTable table (ID int,CustName varchar(50),Sales_Jan int,Sales_Feb int,Sales_Mar int)
Insert into @YourTable values
(1,'John Smith',25,25,50),
(2,'Jane Doe' ,35,20,null)
Select A.*
,C.*
,PctOfTotal = Format(C.Total*1.0/Sum(C.Total) over(),'0.00%')
From @YourTable A
Cross Apply (Select XMLData=cast((Select A.* For XML RAW) as xml)) B
Cross Apply (
Select Total = Sum(Value)
,Min = Min(Value)
,Max = Max(Value)
,Avg = Avg(Value)
From (
Select Value = attr.value('.','int')
From B.XMLData.nodes('/row') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') Like 'Sales_%'
--Or you can Exclude Specific Columns
--Where attr.value('local-name(.)','varchar(100)') not in ('ID','CustName')
) S
) C
R
당신은'반환 columns'의 모든 값의 합계 무엇을 의미합니까 eturns? 외모로 보면 이름은 아마도 텍스트 열일 것입니다. 무엇의 합계? – GurV
코드는 지정된 표의 모든 열을 반환합니다. 특정 행의 각 열의 값을 합산하여 하나의 행의 값을 합산하고자하므로 –
을 원하십니까? 왜 열 이름을 쓸 수 없습니까? 몇 개의 열이 있습니까? – Hogan