產品 配方 比例
蘋果汁 蘋果 30
蘋果汁 水 70
冰糖橙汁 橙子 20
冰糖橙汁 冰糖 5
冰糖橙汁 水 75
檸檬水 檸檬 10
檸檬水 水 90
轉換成
產品 配方 比例 配方 比例 配方 比例
蘋果汁 蘋果 30 水 70
冰糖橙汁 橙子 20 冰糖 5 水 75
檸檬水 檸檬 10 水 90
有沒有大佬,求指教
uj5u.com熱心網友回復:
行轉列的語法。sqlserver的話用piovt
有例子:
https://www.cnblogs.com/itsone/p/10232433.html
uj5u.com熱心網友回復:
CREATE TABLE #T
(ITEM NVARCHAR(20),
ELEMENT NVARCHAR(20),
RATIO INT)
INSERT INTO #T
SELECT '蘋果汁','蘋果',30 UNION ALL
SELECT '蘋果汁','水',70 UNION ALL
SELECT '冰糖橙汁','橙子',20 UNION ALL
SELECT '冰糖橙汁','冰糖',5 UNION ALL
SELECT '冰糖橙汁','水',75 UNION ALL
SELECT '檸檬水','檸檬',10 UNION ALL
SELECT '檸檬水','水',90
DECLARE @SQL NVARCHAR(MAX)
;WITH CTE
AS
(SELECT *,ROW_NUMBER() OVER (PARTITION BY ITEM ORDER BY (SELECT 1)) AS SEQ FROM #T)
SELECT @SQL=ISNULL(@SQL+',','')+'MAX(CASE WHEN SEQ='+CAST(SEQ AS VARCHAR)+' THEN ELEMENT ELSE '''' END) AS ELEMENT'++CAST(SEQ AS VARCHAR)
+',SUM(CASE WHEN SEQ='+CAST(SEQ AS VARCHAR)+' THEN RATIO ELSE 0 END) AS RATIO'++CAST(SEQ AS VARCHAR)
FROM
(SELECT DISTINCT SEQ FROM CTE) AS A
SET @SQL='WITH CTE
AS
(SELECT *,ROW_NUMBER() OVER (PARTITION BY ITEM ORDER BY (SELECT 1)) AS SEQ FROM #T)
SELECT ITEM,'+@SQL+' FROM CTE GROUP BY ITEM'
EXEC(@SQL)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/59303.html
標籤:應用實例
上一篇:Python太難了,救救孩子吧
