Zahid Ahamed
asked on
T-SQL query
Hi,
In the following query i am getting valid value as well as invalid values. Basically i wanted to see kernelrelease data. This column is needed to display for reporting purposes.
select CASE WHEN ipaddress like '%10.4.%' or ipaddress like '%10.4.%' or ipaddress like '%10.4.%' or ipaddress like '%10.4.139%' or ipaddress like '%10.%' THEN 'DEV'
WHEN ipaddress not like '%10.%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4.%' or ipaddress not like '%10.4%' or ipaddress not like '%10.%' THEN 'PROD'
END AS is_Prod_or_Dev
, o.hostname
, o.ipaddress
, CASE WHEN o.hardware_servicetag like '%000%' THEN '' ELSE o.hardware_servicetag END as hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, q.value as kernelrelease
,CASE o.is_virtual WHEN
'False' THEN o.processorcount/2 ELSE o.processorcount END AS processorcount
, o.memorysize
, o.appname
, max(w.warrantyEndDate) as LeaseEndDate
, m.value as crowdstrike
, n.value as tibslastlogin
, p.value as reportdate
from oraclehosts o
left join hostwarranty w on w.hostname = o.hostname Collate SQL_Latin1_General_CP1_CI_ AS
left join puppetdb_certname_facts p on p.certname = o.hostname AND p.fact = 'reportdate'
left join puppetdb_certname_facts m on m.certname = o.hostname AND m.fact = 'crowdstrike'
left join puppetdb_certname_facts n on n.certname = o.hostname AND n.fact = 'tibslastlogin'
left join puppetdb_certname_facts q on n.certname = o.hostname AND q.fact = 'kernelrelease'
group by
o.hostname
, o.ipaddress
, o.operatingsystem
, o.hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, o.processorcount
, o.memorysize
, o.appname
,m.value
,n.value
,p.value
,q.value
order by reportdate desc
Before add this kernelrelease i had 256 records now i am getting 8000 above records,
This is actual table, when i run then i get one single records.
select * from [dbo].[puppetdb_certname_f acts] where fact = 'kernelrelease' and certname ='xxxxxx'
How can i calculate to get a single record. Please help!
In the following query i am getting valid value as well as invalid values. Basically i wanted to see kernelrelease data. This column is needed to display for reporting purposes.
select CASE WHEN ipaddress like '%10.4.%' or ipaddress like '%10.4.%' or ipaddress like '%10.4.%' or ipaddress like '%10.4.139%' or ipaddress like '%10.%' THEN 'DEV'
WHEN ipaddress not like '%10.%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4.%' or ipaddress not like '%10.4%' or ipaddress not like '%10.%' THEN 'PROD'
END AS is_Prod_or_Dev
, o.hostname
, o.ipaddress
, CASE WHEN o.hardware_servicetag like '%000%' THEN '' ELSE o.hardware_servicetag END as hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, q.value as kernelrelease
,CASE o.is_virtual WHEN
'False' THEN o.processorcount/2 ELSE o.processorcount END AS processorcount
, o.memorysize
, o.appname
, max(w.warrantyEndDate) as LeaseEndDate
, m.value as crowdstrike
, n.value as tibslastlogin
, p.value as reportdate
from oraclehosts o
left join hostwarranty w on w.hostname = o.hostname Collate SQL_Latin1_General_CP1_CI_
left join puppetdb_certname_facts p on p.certname = o.hostname AND p.fact = 'reportdate'
left join puppetdb_certname_facts m on m.certname = o.hostname AND m.fact = 'crowdstrike'
left join puppetdb_certname_facts n on n.certname = o.hostname AND n.fact = 'tibslastlogin'
left join puppetdb_certname_facts q on n.certname = o.hostname AND q.fact = 'kernelrelease'
group by
o.hostname
, o.ipaddress
, o.operatingsystem
, o.hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, o.processorcount
, o.memorysize
, o.appname
,m.value
,n.value
,p.value
,q.value
order by reportdate desc
Before add this kernelrelease i had 256 records now i am getting 8000 above records,
This is actual table, when i run then i get one single records.
select * from [dbo].[puppetdb_certname_f
How can i calculate to get a single record. Please help!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Just a comment on the case... Should be
I think ste5an is on top of it, so will leave the rest to him....
He identified the incorrect alias and that would have returned all 'q' rows with q.fact = 'kernelrelease'
SELECT CASE WHEN ipaddress LIKE '%10.4.%'
OR ipaddress LIKE '%10.4.%'
OR ipaddress LIKE '%10.4.%'
OR ipaddress LIKE '%10.4.139%'
OR ipaddress LIKE '%10.%' THEN 'DEV'
ELSE 'PROD'
END AS is_Prod_or_Dev ,
I think ste5an is on top of it, so will leave the rest to him....
He identified the incorrect alias and that would have returned all 'q' rows with q.fact = 'kernelrelease'
ASKER
This is exact query i call a report everyday.... now management wanted to see the kernerrelease column data
select CASE WHEN ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4.%' THEN 'DEV'
WHEN ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' THEN 'PROD'
END AS is_Prod_or_Dev
, o.hostname
, o.ipaddress
, CASE WHEN o.hardware_servicetag like '%000%' THEN '' ELSE o.hardware_servicetag END as hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
---, q.value as kernelrelease
, CASE o.is_virtual WHEN 'False' THEN o.processorcount/2 ELSE o.processorcount END AS processorcount
, o.memorysize
, o.appname
, max(w.warrantyEndDate) as LeaseEndDate
, m.value as crowdstrike
, n.value as tibslastlogin
, p.value as reportdate
from oraclehosts o
left join hostwarranty w on w.hostname = o.hostname Collate SQL_Latin1_General_CP1_CI_ AS
left join puppetdb_certname_facts p on p.certname = o.hostname AND p.fact = 'reportdate'
left join puppetdb_certname_facts m on m.certname = o.hostname AND m.fact = 'crowdstrike'
left join puppetdb_certname_facts n on n.certname = o.hostname AND n.fact = 'tibslastlogin'
---left join puppetdb_certname_facts q on n.certname = o.hostname AND q.fact = 'kernelrelease'
group by
o.hostname
, o.ipaddress
, o.operatingsystem
, o.hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, o.processorcount
, o.memorysize
, o.appname
, m.value
, n.value
, p.value
--, q.value
order by reportdate desc
select CASE WHEN ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4%' or ipaddress like '%10.4.%' THEN 'DEV'
WHEN ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' or ipaddress not like '%10.4%' THEN 'PROD'
END AS is_Prod_or_Dev
, o.hostname
, o.ipaddress
, CASE WHEN o.hardware_servicetag like '%000%' THEN '' ELSE o.hardware_servicetag END as hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
---, q.value as kernelrelease
, CASE o.is_virtual WHEN 'False' THEN o.processorcount/2 ELSE o.processorcount END AS processorcount
, o.memorysize
, o.appname
, max(w.warrantyEndDate) as LeaseEndDate
, m.value as crowdstrike
, n.value as tibslastlogin
, p.value as reportdate
from oraclehosts o
left join hostwarranty w on w.hostname = o.hostname Collate SQL_Latin1_General_CP1_CI_
left join puppetdb_certname_facts p on p.certname = o.hostname AND p.fact = 'reportdate'
left join puppetdb_certname_facts m on m.certname = o.hostname AND m.fact = 'crowdstrike'
left join puppetdb_certname_facts n on n.certname = o.hostname AND n.fact = 'tibslastlogin'
---left join puppetdb_certname_facts q on n.certname = o.hostname AND q.fact = 'kernelrelease'
group by
o.hostname
, o.ipaddress
, o.operatingsystem
, o.hardware_servicetag
, o.oracle_sizeofd02
, o.oracle_spacedused_d02
, o.is_virtual
, o.lsbdistdescription
, o.uptime
, o.productname
, o.processorcount
, o.memorysize
, o.appname
, m.value
, n.value
, p.value
--, q.value
order by reportdate desc
ASKER
Problem is now if add q.value as kernelrelease then i am getting that exact data as well as unreleated data.
certname
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
value
kernelrelease
2.6.18-238.el5
2.6.18-274.el5
2.6.18-348.el5
2.6.32-358.14.1.el6.x86_64
2.6.32-431.11.2.el6.x86_64
2.6.32-504.30.3.el6.x86_64
2.6.32-642.13.1.el6.x86_64
2.6.32-642.4.2.el6.x86_64
2.6.32-696.13.2.el6.x86_64
2.6.32-696.6.3.el6.x86_64
2.6.39-200.24.1.el6uek.x86 _64
2.6.39-400.215.10.el6uek.x 86_64
2.6.39-400.215.3.el6uek.x8 6_64
2.6.39-400.250.11.el6uek.x 86_64
3.10.0-327.18.2.el7.x86_64
3.10.0-327.el7.x86_64
3.10.0-693.11.1.el7.x86_64
3.10.0-693.2.2.el7.x86_64
3.10.0-693.5.2.el7.x86_64
3.8.13-118.10.2.el7uek.x86 _64
3.8.13-118.14.2.el6uek.x86 _64
3.8.13-118.4.1.el7uek.x86_ 64
4.1.12-103.6.1.el7uek.x86_ 64
4.1.12-103.7.3.el6uek.x86_ 64
4.1.12-103.7.3.el7uek.x86_ 64
4.1.12-61.1.17.el6uek.x86_ 64
4.1.12-61.40.1.el6uek.x86_ 64
4.1.12-94.1.8.el6uek.x86_6 4
4.1.12-94.1.8.el7uek.x86_6 4
4.1.12-94.3.9.el7uek.x86_6 4
4.1.12-94.5.7.el6uek.x86_6 4
4.1.12-94.5.7.el7uek.x86_6 4
4.1.12-94.6.4.el6uek.x86_6 4
4.9.0-3-amd64
4.9.41-v7+
i should get this 4.1.12-94.5.7.el7uek.x86_6 4
certname fact value
usd--xxx..net kernelrelease 4.1.12-94.5.7.el7uek.x86_6 4
i guess it is clear now.
certname
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
usd--xxx..net kernelrelease
value
kernelrelease
2.6.18-238.el5
2.6.18-274.el5
2.6.18-348.el5
2.6.32-358.14.1.el6.x86_64
2.6.32-431.11.2.el6.x86_64
2.6.32-504.30.3.el6.x86_64
2.6.32-642.13.1.el6.x86_64
2.6.32-642.4.2.el6.x86_64
2.6.32-696.13.2.el6.x86_64
2.6.32-696.6.3.el6.x86_64
2.6.39-200.24.1.el6uek.x86
2.6.39-400.215.10.el6uek.x
2.6.39-400.215.3.el6uek.x8
2.6.39-400.250.11.el6uek.x
3.10.0-327.18.2.el7.x86_64
3.10.0-327.el7.x86_64
3.10.0-693.11.1.el7.x86_64
3.10.0-693.2.2.el7.x86_64
3.10.0-693.5.2.el7.x86_64
3.8.13-118.10.2.el7uek.x86
3.8.13-118.14.2.el6uek.x86
3.8.13-118.4.1.el7uek.x86_
4.1.12-103.6.1.el7uek.x86_
4.1.12-103.7.3.el6uek.x86_
4.1.12-103.7.3.el7uek.x86_
4.1.12-61.1.17.el6uek.x86_
4.1.12-61.40.1.el6uek.x86_
4.1.12-94.1.8.el6uek.x86_6
4.1.12-94.1.8.el7uek.x86_6
4.1.12-94.3.9.el7uek.x86_6
4.1.12-94.5.7.el6uek.x86_6
4.1.12-94.5.7.el7uek.x86_6
4.1.12-94.6.4.el6uek.x86_6
4.9.0-3-amd64
4.9.41-v7+
i should get this 4.1.12-94.5.7.el7uek.x86_6
certname fact value
usd--xxx..net kernelrelease 4.1.12-94.5.7.el7uek.x86_6
i guess it is clear now.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks a lot Mark, It worked for me.
=8)
ASKER
The exact record should be
Hostname fact value
usd-vv-276.ccccc.net kernelrelease 4.1.12-94.5.7.el7uek.x86_6