次のようなデータセットがあります。
ID Description Team
A Missing Name; Missing Gender Team1
B Missing Gender Team1
C Missing Name Team2
D Missing Name Team2
つまり、各 ID には 1 行があり、ID に関する問題を特定するテキスト列 (説明) と、ID が属するチームの名前が含まれます。私はそれを次のように要約することができました:
Team Missing Gender Missing Name
Team1 2 1
Team2 0 2
次のような case ステートメントを使用します。
SELECT
"Team",
sum(case when "DQ Info" like '%Missing Gender%' then 1 ELSE 0 END) as "Missing Gender",
sum(case when "DQ Info" like '%Missing Name%' then 1 ELSE 0 END) as "Missing Name"
FROM
(*)
GROUP BY "Team"
このデータを要約して、代わりに次のようにしたいと思います。
Description Team1 Team2
Missing Gender 2 0
Missing Name 1 2
それを行う方法があるに違いないことは知っていますが、現時点では苦労しています。上記のフィールドで「チーム」の代わりに「説明」を使用すると、次のような結果が得られます。
Description Team1 Team2
Missing Name; Missing Gender 1 0
Missing Gender 1 0
Missing Name 0 2
これは私が求めているものではありません。いじり続けますが、何か助けていただければ幸いです。解決できたら、この投稿を更新します。これはデータセットの単なる例であり、実際のデータセットではないことに注意してください。
編集: bpgergo の提案に従って、以下のクエリを実行します。いくつかの読み取りを行った後、以下はショート サーキットのように見えます。つまり、内側のケースの最初の基準が満たされるとクエリを終了します。つまり、列を複数回カウントすることはできません。残念ですが、元のクエリに固執する必要があると思います。
SELECT
"Description",
sum(case when "Team" like 'Team1' then 1 ELSE 0 END) as "Team1",
sum(case when "Team" like 'Team2' then 1 ELSE 0 END) as "Team2"
FROM(SELECT
"Team",
case when "DQ Info" like '%[Check Role]%' then '[Check Role]'
ELSE case when "DQ Info" like '%[Client deceased]%' then '[Client deceased]'
ELSE case when "DQ Info" like '%[2 Parents not recorded]%' then '[2 Parents not recorded]'
ELSE case when "DQ Info" like '%[Religion not recorded]%' then '[Religion not recorded]'
ELSE case when "DQ Info" like '%[1st Language not recorded]%' then '[1st Language not recorded]'
ELSE case when "DQ Info" like '%[Ethnicity not recorded]%' then '[Ethnicity not recorded]'
ELSE case when "DQ Info" like '%[No Current Worker]%' then '[No Current Worker]'
ELSE case when "DQ Info" like '%[No Current Team]%' then '[No Current Team]'
ELSE case when "DQ Info" like '%[Update Gender]%' then '[Update Gender]'
ELSE case when "DQ Info" like '%[No Plan]%' then '[No Plan]'
ELSE case when "DQ Info" like '%[Update Plan]%' then '[Update Plan]'
END END END END END END END END END END END
as "Description"
FROM(
*
FROM
(*)WORKLOAD)DATA)
GROUP BY "Description"