[英]SQL Query to extract data from a field and return counts instead of text, then group with totals
我有一个名为Billing的两列表,看起来像这样:
ID Details
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"JAY PATEL","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
164AD558-E3AF-4FB9-9CCF-3EB8FE7A02FE {"Search":"Tint","Subject":"Derel Borges","SubjectId":"TL-100317-9A3TG-FS-001","SLW":"True","MN":"True","EPP":"True","ApproximateTotalRecords":"0"}
95133974-A169-4647-B176-E9F3CF1FFE26 {"Search":"Tint","Subject":"KRISTEN KiFL","SubjectId":"25517489","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"ASHLEY HARMN","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"ZACHARY PRIDGEN","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
95133974-A169-4647-B176-E9F3CF1FFE26 {"Search":"Tint","Subject":"GODFREY CREELEY","SubjectId":"27235440","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"FELICIA SMITH","SubjectId":"35","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"KIANA JOHN","SubjectId":"35","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"HU LI","SubjectId":"35","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"0"}
95133974-A169-4647-B176-E9F3CF1FFE26 {"Search":"Tint","Subject":"PAT REID","SubjectId":"26134607","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"JOHN RODRIGUEZ","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
95133974-A169-4647-B176-E9F3CF1FFE26 {"Search":"Tint","Subject":"FAWN JOSEY","SubjectId":"27108394","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"0"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"OSCAR DELL","SubjectId":"35","SLW":"True","MN":"False","EPP (temp)":"False","ApproximateTotalRecords":"3"}
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 {"Search":"Tint","Subject":"SARAH SMITH","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
164AD558-E3AF-4FB9-9CCF-3EB8FE7A02FE {"Search":"Tint","Subject":"KELLER SMITH","SubjectId":"35","SLW":"True","MN":"False","EPP":"False","ApproximateTotalRecords":"0"}
我需要完成的是编写一个查询,该查询从每条记录中提取True SLW,MN,EPP和EPP(温度)的数量,然后通过ID将它们作为计数返回。
因此,为了便于理解,让我分两步显示所需的结果:
该查询首先需要完成此操作:请原谅图像,因为我无法正确地对齐表以进行读取:
请注意,并非所有4个代码都存在于每个记录中。 如果代码不存在,我仍然希望该行将其返回为零。
然后,我想要按ID求和-因此此查询的最终结果将如下所示:
ID SLW MN EPP EPP (temp)
E4A02FB2-298B-4790-B01A-DCAE2B3CC0A2 8 0 0 0
164AD558-E3AF-4FB9-9CCF-3EB8FE7A02FE 2 1 1 0
95133974-A169-4647-B176-E9F3CF1FFE26 4 0 0 0
对于我的SQL查询经验水平而言,这是非常高级的,因此希望这里的人可以帮助指导正确的方向吗?
非常感谢。
这样的事情应该做到:
SELECT
ID
, SUM(CASE WHEN Details LIKE '%"SLW":"True"%' THEN 1 ELSE 0 END) SLW
, SUM(CASE WHEN Details LIKE '%"MN":"True"%' THEN 1 ELSE 0 END) MN
, SUM(CASE WHEN Details LIKE '%"EPP":"True"%' THEN 1 ELSE 0 END) EPP
, SUM(CASE WHEN Details LIKE '%"EPP (temp)":"True"%' THEN 1 ELSE 0 END) [EPP (temp)]
FROM Billing
GROUP BY ID
对于更基本的结果集:
SELECT
ID
, CASE WHEN Details LIKE '%"SLW":"True"%' THEN 1 ELSE 0 END SLW
, CASE WHEN Details LIKE '%"MN":"True"%' THEN 1 ELSE 0 END MN
, CASE WHEN Details LIKE '%"EPP":"True"%' THEN 1 ELSE 0 END EPP
, CASE WHEN Details LIKE '%"EPP (temp)":"True"%' THEN 1 ELSE 0 END [EPP (temp)]
FROM Billing
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.