我有一个名为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(temp)的数量,然后按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