我正在尝试从几个数据库表生成报告。简化版看起来像这样
Campaign ---------- CampaignID Source ----------------------- Source_ID | Campaign_ID Content --------------------------------------------------------- Content_ID | Campaign_ID | Content_Row_ID | Content_Value
该报告需要这样阅读:
CampaignID - SourceID - ContentRowID(Value(A)) - ContentRowID(Value(B))
其中ContentRowID(Value(A))的意思是“查找具有给定CampaignID和ContentRowId为“ A”的行,然后获取该行的ContentValue”
本质上,我必须将行“透视”(我认为这是正确的术语)……
这是一个Oracle 10g数据库…
有什么建议?
这是我的第一把刀。一旦我对Content表的内容有了更多的了解,就可以进行优化。
首先,您需要一个临时表:
CREATE TABLE pivot (count integer); INSERT INTO pivot VALUES (1); INSERT INTO pivot VALUES (2);
现在我们可以查询了。
SELECT campaignid, sourceid, a.contentvalue, b.contentvalue FROM content a, content b, pivot, source WHERE source.campaignid = content.campaignid AND pivot = 1 AND a.contentrowid = 'A' AND pivot = 2 AND b.contentrowid = 'B'