我有以下CTE在MERCHANDISE_AMT字段上进行求和,与下面的两个查询分开,然后将这些结果合并到最终选择中。我在内部查询和/或最终的Select语句上出现了Group By问题。我希望能够将LINE_NBR和PO_DIST_LINE_NUM分组在一起,以使我有2行作为最终输出。我需要选择这些列,以便在最终查询的Join中引用它们。
view
以下是当前输出:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(white: 0.25, alpha: 1.0)
view.backgroundColor = UIColor(white: 0.25, alpha: 1.0)
view.addSubview(button1)
view.addSubview(button2)
button1.addTarget(self, action: #selector(button1Pressed(_:)), for: .touchUpInside)
button2.addTarget(self, action: #selector(button2Pressed(_:)), for: .touchUpInside)
}
@objc func button1Pressed(_ sender: UIButton) {
}
@objc func button2Pressed(_ sender: UIButton) {
}
所需的最终输出如下:
@objc func button1Pressed(_ sender: UIButton) {
if monkeyPosition == 1 {
button2.isHidden = false
}
}
问题在于,“阈值”字段的计算在每个REQUESTOR中是分开进行的,我相信是由于第一个CTE查询(别名“ CTE”)中的字段DISTRIB_LINE_NUM。如果我从第一个查询中删除DISTRIB_LINE_NUM列,则会得到2行的输出,但是为了在最终查询中进行联接,看来我需要在第一个查询中的字段上进行选择,以便能够在最终选择查询的联接中引用它(除非有解决方法)。
我不相信有一种方法可以选择一个非聚合列,然后不必在Group By中使用它,因此我正在寻找解决方案。如果有一种方法可以将Group By应用于最终选择,以便通过REQUESTOR或通过修改内部查询Group By将四行分组为两行。
答案 0 :(得分:0)
下面应该可以工作。想法是您合并文件,然后汇总组级别并在同一行中获取值,然后在结果上找到一个阈值。请注意-转换后为您的PO_DT值创建别名。
Select REQUESTOR, BUSINESS_UNIT, PO_ID, PO_TYPE, PO_STATUS, PO_DT, VENDOR_SETID, VENDOR_ID, BUYER_ID, DEPTID, ROLEUSER_SUPR, NULLIF((SUM_MERCHA / SUM_MERCHB),0) AS 'Threshold' from
(
Select REQUESTOR, BUSINESS_UNIT, PO_ID, PO_TYPE, PO_STATUS, PO_DT, VENDOR_SETID, VENDOR_ID, BUYER_ID, DEPTID, ROLEUSER_SUPR, SUM(SUM_MERCHA) as SUM_MERCHA, SUM(SUM_MERCHB) as SUM_MERCHB from (
SELECT DISTINCT D.REQUESTOR, D.BUSINESS_UNIT, D.PO_ID, D.PO_TYPE, D.PO_STATUS, (CONVERT(CHAR(10),D.PO_DT,121)) as PO_DT, D.VENDOR_SETID, D.VENDOR_ID, D.BUYER_ID, D.DEPTID, D.ROLEUSER_SUPR, G.MERCHANDISE_AMT as SUM_MERCHA, D.MERCHANDISE_AMT as SUM_MERCHB
FROM CTE D
LEFT OUTER JOIN CTE2 G ON G.PO_ID = D.PO_ID AND G.BUSINESS_UNIT_PO = D.BUSINESS_UNIT AND G.SCHED_NBR = D.SCHED_NBR AND G.LINE_NBR = D.LINE_NBR AND G.PO_DIST_LINE_NUM = D.DISTRIB_LINE_NUM)
Group by D.REQUESTOR, D.BUSINESS_UNIT, D.PO_ID, D.PO_TYPE, D.PO_STATUS, PO_DT, D.VENDOR_SETID, D.VENDOR_ID, D.BUYER_ID, D.DEPTID, D.ROLEUSER_SUPR) E ) F