SQL Server行轉列


在很多情況下需要查詢出來的數據進行行轉列,看如下的例子,#t是一個臨時表,可以換成真實存在的表:

--頭部信息,這部分不參與行轉列
DECLARE
@SqlText NVARCHAR(4000)='SELECT DeviceName 貨機名稱, DeviceAddress 貨機地址,CONVERT(VARCHAR(10), ReplenishmentCreatedDate, 20) 時間, ' -- SQL頭部分 SELECT
--行轉列如下:可以重命名字段名,列頭用其中一個列生成,列信息用另一個字段的信息,可以讓多列數據信息轉換 SELECT @SqlText = @SqlText + ' SUM(CASE WHEN GoodsName=''' + GoodsName + ''' THEN ISNULL(ReplenishmentTotalQuantity, 0) END) ''' + GoodsName + '(上貨[件])'',' + ' SUM(CASE WHEN GoodsName=''' + GoodsName + ''' THEN ISNULL(PickUpTotalQuantity,0) END) ''' + GoodsName + '(下貨[件])'',' FROM (SELECT DISTINCT GoodsName FROM #t) T -- 拼接CASE WHEN SELECT @SqlText = LEFT(@SqlText, Len(@SqlText)-1) + ' FROM #t GROUP BY DeviceName, DeviceAddress,CONVERT(VARCHAR(10), ReplenishmentCreatedDate, 20)' -- 拼接 FROM后面部分 PRINT @SqlText EXEC (@SqlText)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM