Abh*_*bhi 5 c# sql sql-server pivot-table
我有一个表,我希望在某些条件下获取数据.我正在使用以下查询获取数据.
SELECT track,
ytd,
weekno,
[unit]
FROM SMIrawdataFinal
WHERE unit IS NOT NULL AND tracktype='focus' AND track='A' AND ytd IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
原始表(数据)如下所示.
track ytd weekno unit
A (Blank) 1 1
A (Blank) 2 2
A (Blank) 3 3
A 19 5 5
A (Blank) 4 4
Run Code Online (Sandbox Code Playgroud)
我在sql server中使用PIVOT得到了以下数据.我的问题是如何删除空值并在一行中获取相同的数据.
autoId track ytd col4 col3 col2 col1
-------------------------------------------------
1 A (Blank) NULL 4 3 2
2 A 19 5 NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
下面是我的SQL查询:
SELECT *
FROM (
SELECT track,ytd,weekno,[unit]
FROM SMIrawdataFinal
WHERE album = 'XYZ'
AND unit IS NOT NULL
AND tracktype='focus'
AND track='A'
AND ytd IS NOT NULL
) as s
PIVOT(
SUM(unit)
FOR weekno in ([5],[4],[3],[2])
)AS pivot1
Run Code Online (Sandbox Code Playgroud)
小智 3
将 group by 与 SUM 结合使用以获得所需的输出:
SELECT track,
SUM(ISNULL(ytd, 0)) AS [ytd],
SUM(ISNULL([5], 0)) AS [5],
SUM(ISNULL([4], 0)) AS [4],
SUM(ISNULL([3], 0)) AS [3],
SUM(ISNULL([2], 0)) AS [2]
FROM (SELECT track,ytd,weekno,[unit]
FROM SMIrawdataFinal where album = 'XYZ'
AND unit IS NOT NULL
AND tracktype='focus'
AND track='A') as s PIVOT
(SUM(unit) FOR weekno in ([5],[4],[3],[2]))AS pivot1
GROUP BY track
Run Code Online (Sandbox Code Playgroud)
输出:
track | ytd | 5 | 4 | 3 | 2
--------------------------------
A | 19 | 5 | 4 | 3 | 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |