나는 테이블을 만들고 아래 결과에 쿼리가 있습니다산술 연산자는 2008
-- tblPart PartCode[NVARCHAR(50)],UnitPrice[Decimal(18,2)]
SELECT * INTO #tblPart FROM(
SELECT 'A' PartCode, '10' UnitPrice
UNION All
SELECT 'B','11'
UNION All
SELECT 'C','38'
UNION All
SELECT 'D','20'
UNION All
SELECT 'E','12')part;
-- tblPartCondition ConditionCode[NVARCHAR(50)],PercentagePrice[Decimal(18,2)]
SELECT * INTO #tblPriceCondition FROM(
SELECT 'Weekly' ConditionCode, '3' PercentagePrice
UNION All
SELECT 'Urgent','-5'
UNION All
SELECT 'Hotline','-10'
UNION All
SELECT 'Normal','0')pricecondition
SELECT PartCode,
[Weekly]=p.UnitPrice + (SELECT (CAST(c.PercentagePrice AS DECIMAL(18,2))/100) FROM #tblPriceCondition c WHERE c.ConditionCode='Weekly'),
[Urgent]=p.UnitPrice + (SELECT (CAST(c.PercentagePrice AS DECIMAL(18,2))/100) FROM #tblPriceCondition c WHERE c.ConditionCode='Urgent'),
[Hotline]=p.UnitPrice + (SELECT (CAST(c.PercentagePrice AS DECIMAL(18,2))/100) FROM #tblPriceCondition c WHERE c.ConditionCode='Hotline'),
[Normal]=p.UnitPrice + (SELECT (CAST(c.PercentagePrice AS DECIMAL(18,2))/100) FROM #tblPriceCondition c WHERE c.ConditionCode='Normal')
FROM #tblPart p
DROP TABLE #tblPart
DROP TABLE #tblPriceCondition
을 아래에 결과를 얻었다 :
PartCode Weekly Urgent Hotline Normal
........ ...... ...... ....... ......
A 10.03 9.95 9.9 10
B 11.03 10.95 10.9 11
C 38.03 37.95 37.9 38
D 20.03 19.95 19.9 20
E 12.03 11.95 11.9 12
위 알려진 열을 기반으로 쿼리 #tblPartCondition, Pls. 기둥이 알려지지 않았다면 어떤 생각입니까? (사용자가 새 PercentageCode, PercentagePrice를 추가하는 경우). 나는 당신의 가치 시간과 몫에 감사 할 것입니다. 감사!
이 경우 사람들은 일반적으로'tblPriceCondition' 테이블의 실제 값을 기반으로 동적으로'PIVOT' 쿼리를 작성하도록 제안합니다. –
감사합니다 @ Vladimir Baranov, 그러나 나는 PIVOT 쿼리에 대해 잘 모릅니다. 코드를 제공 할 수 있습니까? – Sokea
https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx http : //stackoverflow.com/questions/12074939/get-rows-as-columns-sql-server-dynamic-pivot-query http://stackoverflow.com/questions/19243821/pivot-transformation-using-t-sql 당신에게 좋은 시작 지점을 준다 –