→ 🚀Are you a Lansweeper Champion?! Join our Contributor Program Sign up here!

Community FAQ
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
galesj
Engaged Sweeper II
Hello,

I'm trying to create a Chart: report that will group our workstation purchases by purchase year. So far I've come up with this, but the counts are too high. I believe it includes assets besides workstations. What's the easiest way to limit it just to workstations?

Select Top 1000000 Case
When tblAssetCustom.PurchaseDate >= Cast('01-01-2018' As DATETIME)
Then '1. Purchased in 2018'
When tblAssetCustom.PurchaseDate >= Cast('01-01-2017' As DATETIME)
And tblAssetCustom.PurchaseDate <= Cast('12-31-2017' As DATETIME) Then
'2. Purchased in 2017'
When tblAssetCustom.PurchaseDate >= Cast('01-01-2016' As DATETIME)
And tblAssetCustom.PurchaseDate <= Cast('12-31-2016' As DATETIME) Then
'3. Purchased in 2016' Else '4. Purchased in 2015 or before'
End As DateRange,
count(*) As NumberOfAssets
From tblAssetCustom
Group By Case
When tblAssetCustom.PurchaseDate >= Cast('01-01-2018' As DATETIME)
Then '1. Purchased in 2018'
When tblAssetCustom.PurchaseDate >= Cast('01-01-2017' As DATETIME)
And tblAssetCustom.PurchaseDate <= Cast('12-31-2017' As DATETIME) Then
'2. Purchased in 2017'
When tblAssetCustom.PurchaseDate >= Cast('01-01-2016' As DATETIME)
And tblAssetCustom.PurchaseDate <= Cast('12-31-2016' As DATETIME) Then
'3. Purchased in 2016' Else '4. Purchased in 2015 or before' End

Thanks!
1 ACCEPTED SOLUTION
RCorbeil
Honored Sweeper II
Give this a try.
SELECT Top 1000000
Year(tblAssetCustom.PurchaseDate) AS PurchaseYear,
Count(*) AS NumberOfAssets
FROM
tblAssets
INNER JOIN tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
INNER JOIN tblComputersystem On tblAssets.AssetID = tblComputersystem.AssetID
WHERE
tblAssetCustom.State = 1 -- Active
AND tblAssets.AssetType = -1 -- Windows
AND tblComputersystem.Domainrole < 2 -- workstation
GROUP BY
Year(tblAssetCustom.PurchaseDate)

If you need to lump anything older than 2016, it should be straightforward enough to replace the Year() with a CASE to create the time blocks you want.

View solution in original post

4 REPLIES 4
RCorbeil
Honored Sweeper II
Give this a try.
SELECT Top 1000000
Year(tblAssetCustom.PurchaseDate) AS PurchaseYear,
Count(*) AS NumberOfAssets
FROM
tblAssets
INNER JOIN tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
INNER JOIN tblComputersystem On tblAssets.AssetID = tblComputersystem.AssetID
WHERE
tblAssetCustom.State = 1 -- Active
AND tblAssets.AssetType = -1 -- Windows
AND tblComputersystem.Domainrole < 2 -- workstation
GROUP BY
Year(tblAssetCustom.PurchaseDate)

If you need to lump anything older than 2016, it should be straightforward enough to replace the Year() with a CASE to create the time blocks you want.
galesj
Engaged Sweeper II
Thanks, this is perfect; much better than my approach. Cheers!
Esben_D
Lansweeper Employee
Lansweeper Employee
Use the following where condition:
Where tblComputersystem.Domainrole < 2
Domainrole property is the easiest way to only select Workstations or Servers.

Value Meaning:
0 Standalone Workstation
1 Member Workstation
2 Standalone Server
3 Member Server
4 Backup Domain Controller
5 Primary Domain Controller
galesj
Engaged Sweeper II
This is a handy tip, thank you.

Reports & Analytics

Ask about reports you're interested in and share reports you've created. Subscribe to receive daily updates of reports shared in the Community.

New to Lansweeper?

Try Lansweeper For Free

Experience Lansweeper with your own data.
Sign up now for a 14-day free trial.

Try Now