Project I'm working on has to do with counting how many machines are being used in our environment. In our database, I'm able to list data like the following:
LocationCode | MachineType | MachineStatus |
---|---|---|
SJO | Desktop | Production |
SJO | Notebook | Production |
FSK | Desktop | Factory |
TMP | Desktop | Production |
AUS | Notebook | Production |
TMP | Desktop | Factory |
FSK | Notebook | Production |
SJO | Desktop | Production |
FSK | Desktop | Production |
Now I need to provide a summary like as follows:
Category | San Jose | Fishkill | Tempe | Austin |
---|---|---|---|---|
Qualified Desktop | 2 | 1 | 1 | 0 |
Qualified Notebook | 1 | 1 | 0 | 1 |
Factory Desktop | 0 | 1 | 1 | 0 |
Here's the solution using PIVOT:
SELECT
Category AS [Category],
[AUS] AS [Austin],
[FSK] AS [Fishkill],
[SJO] AS [San Jose],
[TMP] AS [Tempe],
[AUS]+[FSK]+[SJO]+[TMP] AS [Total]
FROM
( SELECT
LocationCode,
(CASE
WHEN MachineStatus = 'Production' AND MachineType = 'Desktop' THEN 'Qualified Desktop'
WHEN MachineStatus = 'Production' AND MachineType = 'Notebook' THEN 'Qualified Notebook'
WHEN MachineStatus = 'Factory' THEN 'Factory Desktop'
END) AS [Category]
FROM V_PcCount_Hardware) AS SourceTable
PIVOT
(
COUNT(LocationCode)
FOR LocationCode IN([AUS], [FSK], [SJO], [TMP])
) AS PivotTable
Category AS [Category],
[AUS] AS [Austin],
[FSK] AS [Fishkill],
[SJO] AS [San Jose],
[TMP] AS [Tempe],
[AUS]+[FSK]+[SJO]+[TMP] AS [Total]
FROM
( SELECT
LocationCode,
(CASE
WHEN MachineStatus = 'Production' AND MachineType = 'Desktop' THEN 'Qualified Desktop'
WHEN MachineStatus = 'Production' AND MachineType = 'Notebook' THEN 'Qualified Notebook'
WHEN MachineStatus = 'Factory' THEN 'Factory Desktop'
END) AS [Category]
FROM V_PcCount_Hardware) AS SourceTable
PIVOT
(
COUNT(LocationCode)
FOR LocationCode IN([AUS], [FSK], [SJO], [TMP])
) AS PivotTable
0 comments:
Post a Comment