繁体   English   中英

SQL查询从字段中提取数据并返回计数而不是文本,然后与总计分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM