I have successfully pivoted a table with a query of this format:
Pivoted Table
SELECT returnColumn, ISNULL(rule1,0), ISNULL(rule2,0)
FROM (SELECT DISTINCT returnColumn,
ruleColumn,
bool
FROM tableRules) AS st
PIVOT (AVG(bool) FOR ruleColumn IN (rule1,rule2) As pt
ORDER BY returnColumn
Edit
My pivoted table has the following format:
+--------------+---------------------+
| returnColumn | rule1 rule2 rule3 |
+--------------+---------------------+
| return1 | 0 1 0 |
| return2 | 1 0 1 |
+--------------+---------------------+
There is another table otherRuleTable
with the columns returnColumn
and rule4
. It looks like this:
+--------------+-------+
| returnColumn | rule4 |
+--------------+-------+
| return1 | 1 |
| return2 | 1 |
+--------------+-------+
I would like this to happen:
+--------------+---------------------------+
| returnColumn | rule1 rule2 rule3 rule4|
+--------------+---------------------------+
| return1 | 0 1 0 1 |
| return2 | 1 0 1 1 |
+--------------+---------------------------+
Attempt
I think this will require a left join, but I am struggling with the syntax. I tried this:
(SELECT returnColumn, ISNULL(rule1,0), ISNULL(rule2,0)
FROM (SELECT DISTINCT returnColumn,
ruleColumn,
bool
FROM tableRules) AS SourceTable
PIVOT (AVG(bool) FOR ruleColumn IN (rule1,rule2) As pt)
LEFT JOIN
(SELECT rule4 FROM otherRuleTable ort)
ON pt.returnColumn = ort.returnColumn
ORDER BY returnColumn
How can I accomplish this?
ANSWER