示例数据:
Data table1:
prodid type location(there are more columns, just ignoring them for this example)
p001 t1 l1
p002 t1 l2
p003 t3 l1
p004 t2
p005 t1 l1
Need a summary like
type Blank [l1] [l2]
t1 0 2 1
t2 1 0 0
t3 0 1 0
面临的问题是位置字段中的空白值。我不知道如何在数据透视查询中表示空白位置值。
Pivot query:
1: select type, [] as Blank, [l1], [l2], Blank + [l1] + [l2] as Total from
2: (select type, location from table1)
3: pivot
4: (count(location) for location in ([],[l1],[l2]) t2
Error on line 1 & 4
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Add a name or single space as the alias name.
答案 0 :(得分:2)
如何只是换掉虚拟值的空/空位置。所以改变
select type, location from table1
到
select type, CASE WHEN location is null THEN 'ZZ' ELSE location END as location from table1
然后该列将是zz或您选择的任何虚拟值
答案 1 :(得分:1)
您可以放弃PIVOT
并使用
SELECT type,
COUNT(CASE
WHEN location = '' THEN 1
END) AS Blank,
COUNT(CASE
WHEN location = 'l1' THEN 1
END) AS l1,
COUNT(CASE
WHEN location = 'l2' THEN 1
END) AS l2,
COUNT(*) AS Total
FROM table1
WHERE location in ('','l1','l2')
GROUP BY type