이것은 동적 피벗 팅에서의 첫 번째 시도이며 조금 갇혀 있습니다!동적 SQL 피벗 - null 제거
나는 두 개의 테이블을 가지고 있는데, 하나는 주식 항목을 보유하고 다른 하나는 다른 웹 사이트 (소스)에 대한 주식 항목의 다른 가격을 보유합니다. 다른 사이트를 가질 가능성이 있으므로 쿼리는 동적이어야합니다.
문제는 내가 결과에서 nulls을 제거 할 수 없으며 누군가가 도울 수 있기를 바랬습니다.
결과는 현재 다음과 같이 다음과 같이
ID site-site1 site-site2 site-site3
1 null 1.99 2.99
2 12.99 null 10.00
3 1.50 null 2.00
쿼리는 다음과 같습니다 어떤 도움을 크게 감상 할 수
DECLARE @sources nvarchar(max)
SELECT @sources =
STUFF((SELECT DISTINCT ',[' +
CASE
WHEN ip.[Source] is null or ip.[Source] = '' THEN 'Default'
ELSE ip.[Source]
END
+ ' - ' +
CASE
WHEN ip.secondSource is null or ip.secondSource = '' THEN 'Default'
ELSE ip.secondSource
END
+ ']'
FROM itemprice ip
for XML PATH('')
), 1, 1, '')
DECLARE @SQL nvarchar(MAX)
SELECT @SQL = N'
SELECT *
FROM
(
SELECT
s.id,
[Source] = CASE
WHEN ip.[Source] is null or ip.[Source] = '''' THEN ''Default''
ELSE ip.[Source]
END + '' - '' +
CASE WHEN ip.secondSource is null or ip.secondSource = '''' THEN ''Default''
ELSE ip.secondSource
END,
SalePrice = isnull(ip.SalePrice, 0)
FROM stock s
LEFT OUTER JOIN itemprice ip on ip.id = s.id
) data
PIVOT
(
MAX(SalePrice) for [Source] IN (' + @sources + ')
) as PivotTable
ORDER BY PivotTable.id'
exec sp_executesql @sql
는 각 포장만큼 간단하지 않다 것처럼 나타나는 @ 원본 항목을 ISNULL로 지정하십시오.
감사합니다.
null을 제거하면 무엇을 의미합니까? 너는 무엇을 원하는거야? – podiluska
죄송합니다. 분명히해야합니다.이 경우에는 0s –