Old name: Memory: Upgrade possible (Built-in)
The report below lists all computers whose RAM can be upgraded
The report will only list assets that meet all of the following criteria:
- The asset state is set to "active".
 - The asset has been successfully scanned at least once.
 - The asset is a Windows computer.
 - The asset has not reached its maximum RAM capacity.
 
Select Top 1000000 tblAssets.AssetID,
  tblAssets.AssetName,
  tblAssets.Domain,
  tblAssets.Username,
  tblAssets.Userdomain,
  Coalesce(tsysOS.Image, tsysAssetTypes.AssetTypeIcon10) As icon,
  tblAssets.IPAddress,
  tblAssetCustom.Manufacturer,
  tblAssetCustom.Model,
  tsysOS.OSname As OS,
  tblAssets.SP,
  tblAssets.Lastseen,
  tblAssets.Lasttried,
  Ceiling(tblPhysicalMemoryArray.MaxCapacity / 1024 / 1024) As MaxCapacityMB,
  CorrectMemory.Memory As MemoryMB,
  Cast(CorrectMemory.Used As numeric) As SlotsUsed,
  tblPhysicalMemoryArray.MemoryDevices As SlotsAvailable,
  tblPhysicalMemoryArray.MemoryDevices - CorrectMemory.Used As SlotsFree
From tblAssets
  Inner Join tblPhysicalMemoryArray On tblAssets.AssetID =
    tblPhysicalMemoryArray.AssetID
  Inner Join (Select tblAssets.AssetID,
    Sum(Ceiling(tblPhysicalMemory.Capacity / 1024 / 1024)) As Memory,
    Count(tblPhysicalMemory.Win32_PhysicalMemoryid) As Used
  From tblAssets
    Left Outer Join (TsysMemorytypes
    Right Outer Join tblPhysicalMemory On TsysMemorytypes.Memorytype =
      tblPhysicalMemory.MemoryType) On tblAssets.AssetID =
      tblPhysicalMemory.AssetID
  Group By tblAssets.AssetID,
    tblPhysicalMemory.MemoryType
  Having (Case When tblPhysicalMemory.MemoryType = 11 Then 'Flash' Else ''
    End) Not Like 'Flash') As CorrectMemory On CorrectMemory.AssetID =
    tblAssets.AssetID And Ceiling(tblPhysicalMemoryArray.MaxCapacity /
    1024) > CorrectMemory.Memory And Ceiling(tblPhysicalMemoryArray.MaxCapacity
    / 1024) > CorrectMemory.Memory
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Left Join tsysOS On tblAssets.OScode = tsysOS.OScode
  Inner Join tblState On tblState.State = tblAssetCustom.State
  Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
  Inner Join tsysIPLocations On tsysIPLocations.LocationID =
    tblAssets.LocationID
Where (tblPhysicalMemoryArray.MemoryDevices - CorrectMemory.Used > 0) And (Case
    When tblPhysicalMemoryArray.[Use] = 3 Then 'System Memory'
  End) = 'System Memory' And tblState.Statename = 'Active'
Order By tblAssets.Domain,
  tblAssets.AssetName,
  SlotsFree Desc