[英]Select a column from subquery inside select?
如何從子查詢到父查詢中選擇Attr1? 我試圖使用Average.Attr1,但不起作用。
不是單組分組功能
SELECT SUM(Report.Attr1),
SUM(Report.Attr2),
SUM(Report.Attr3),
0
FROM {Report},
(
SELECT AVG(Report.Attr1),
AVG(Report.Attr2),
AVG(Report.Attr3)
FROM Report
WHERE
StartDate <= Report.Date AND
Report.Date <= EndDate
GROUP BY Report.Attr1, Report.Attr2, Report.Attr3
) Average
WHERE
StartDate <= Report.Date AND
Report.Date <= EndDate
您可以為這些聚合函數添加別名,以便可以在外部查詢中使用它們
SELECT SUM(avg_attr1),
SUM(avg_attr2),
SUM(avg_attr3),
0
FROM {Report},
(
SELECT AVG(Report.Attr1) as avg_attr1,
AVG(Report.Attr2) as avg_attr2,
AVG(Report.Attr3) as avg_attr3
...
或者,如果您只想限制它們,則可以將HAVING子句與GROUP BY一起使用
...
GROUP BY Report.Attr1, Report.Attr2, Report.Attr3
HAVING AVG(Report.Attr1) > {SomeNumber}
) Average
...
我不確定這是否是您想要的,但是我可以通過以下方法使它起作用:
WITH REPORT (STARTDATE,ENDDATE,DATE1,ATTR1,ATTR2,ATTR3)AS(
SELECT DATE '2018-01-01',DATE '2018-02-01',DATE '2018-01-11', 1,2,3 FROM DUAL UNION ALL
SELECT DATE '2018-01-01',DATE '2018-02-01',DATE '2018-01-11',1,2,3 FROM DUAL UNION ALL
select date '2018-01-01',DATE '2018-02-01',DATE '2018-01-11',1,2,3 from dual
)
SELECT SUM(Report.Attr1),
SUM(Report.Attr2),
SUM(REPORT.ATTR3),
0,
average.a,average.b,average.c
FROM REPORT,
(
SELECT AVG(REPORT.ATTR1) A,
AVG(REPORT.ATTR2) B ,
AVG(Report.Attr3) c
FROM Report
WHERE
STARTDATE <= REPORT.DATE1 AND
Report.Date1 <= EndDate
GROUP BY Report.Attr1, Report.Attr2, Report.Attr3
) Average
WHERE
STARTDATE <= REPORT.DATE1 AND
REPORT.DATE1 <= ENDDATE
GROUP BY 0,
average.a,average.b,average.c
您可以通過提供別名來引用它們。 現在,如果您說“ Average.attr
您將獲得與Report.Attr1
相對應的值
SELECT SUM(Report.Attr1),
SUM(Report.Attr2),
SUM(Report.Attr3),
0,
Average.attr
FROM {Report},
(
SELECT AVG(Report.Attr1) as attr,
AVG(Report.Attr2),
AVG(Report.Attr3)
FROM Report
WHERE
StartDate <= Report.Date AND
Report.Date <= EndDate
GROUP BY Report.Attr1, Report.Attr2, Report.Attr3
) Average
WHERE
StartDate <= Report.Date AND
Report.Date <= EndDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.