有人可以帮我解决这个 SQL 查询吗?
CASE
WHEN al.subject_type LIKE '%User' THEN (SELECT CONCAT_WS(" ",u.fname,u.lname) from users WHERE users.id = al.subject_id )
WHEN al.subject_type LIKE '%Group' THEN (SELECT name from `groups` WHERE `groups`.id = al.subject_id )
WHEN al.subject_type LIKE '%ResourceOpportunity' THEN (SELECT title from resource_occasions ro JOIN resources r ON r.id= ro.resource_id AND ro.id = al.subject_id)
WHEN al.subject_type LIKE '%QuestionAnswer' THEN
(SELECT ri.name from question_answers qa
JOIN questions q ON q.id= qa.question_id
JOIN resource_items ri ON ri.id = q.item_id
AND qa.id = al.subject_id)
ELSE al.subject_type
END Resource
如何在 Power Query 中实现这个 SQL 案例? 我正在尝试使用可以实现这一点的公式创建一个新的自定义列:
if [subject_type] = "User" then SELECT username from users table else if [subject_type] = "Group" then SELECT name from groups table else if [subject_type] = "ResourceOpportunity" then SELECT title from resource_occasions table else if [subject_type] = "QuestionAnswer" then SELECT name from questions_answers表 否则 [subject_type]
但这根本行不通。有人可以帮忙吗。几天以来,我一直在努力解决这个问题。谢谢!
答案 0 :(得分:0)
假设每个查找表的每个 id 只包含一个(或没有)值:
let
Source = al,
join = Table.NestedJoin(Source, "id", users, "id", "users"),
join1 = Table.NestedJoin(join, "id", groups, "id", "groups"),
join2 = Table.NestedJoin(join1, "id", resource_occassions, "id", "resource_occassions"),
join3 = Table.NestedJoin(join2, "id", questions_answers, "id", "questions_answers"),
final = Table.AddColumn(join3, "new", each if [subject_type] = "User" then [users][username]{0}?
else if [subject_type] = "Group" then [groups][name]{0}?
else if [subject_type] = "ResourceOpportunity" then [resource_occasions][title]{0}?
else if [subject_type] = "QuestionAnswer" then [questions_answers][name]{0}?
else [subject_type])
in
final