SELECT Q.NAME DEVICE_NAME,T.NAME T_NAME,B.AVE,B.SD,SUM(CASE WHEN D.OUT_OF_CONTROL=1 THEN 1 ELSE 0 END)OUT_OF_CONTROL_TIME, COUNT(D.ID)TEST_TIME,D.TEST_ID,B.Batch_No,
        POWER(AVG(CASE WHEN D.ISCALPOINT=0 THEN POWER(D.TEST_VAL-SSS,2)ELSE NULL END),0.5),
        AVG(CASE WHEN D.ISCALPOINT=0 THEN D.TEST_VAL WHEN D.ISCALPOINT IS NULL THEN D.TEST_VAL ELSE NULL END)SSS
        FROM QC_QCTEST_DATA D,QC_TEST T,QC_DEVICE Q,QC_QCTEST_BATCH B 
        WHERE D.DEV_ID=1715
        AND TO_CHAR(D.TEST_DATE_TIME,'yyyy-MM')='2013-05'
        AND B.TYPE=2
        AND D.BATCH_ID=B.ID
        AND D.DEV_ID=Q.ID
        AND D.TEST_ID=T.ID 
        GROUP BY D.TEST_ID,Q.NAME,T.NAME,B.AVE,B.SD,B.TYPE,B.Batch_No怎么写可以将下面红色SSS内容加到上面红色的位置进行计算???现在sql语句是错的SQLselect

解决方案 »

  1.   

    上边的“SSS”是不能够引用下边的“SSS”的。
    建议你把“SSS”部分抽出来写,把结果当变量传给这个sql。
    你也可以试试写子查询。
      

  2.   

    我最后就写的子查询,怎么实现“结果当变量传给这个sql”
      

  3.   

    我最后就写的子查询,怎么实现“结果当变量传给这个sql”存储过程可以么?
    要不用两条语句?
      

  4.   

    select tmp.*,POWER(AVG(CASE WHEN D.ISCALPOINT=0 THEN POWER(D.TEST_VAL-SSS,2)ELSE NULL END),0.5) ot1 from 
    (SELECT Q.NAME DEVICE_NAME,T.NAME T_NAME,B.AVE,B.SD,SUM(CASE WHEN D.OUT_OF_CONTROL=1 THEN 1 ELSE 0 END)OUT_OF_CONTROL_TIME, COUNT(D.ID)TEST_TIME,D.TEST_ID,B.Batch_No,
            AVG(CASE WHEN D.ISCALPOINT=0 THEN D.TEST_VAL WHEN D.ISCALPOINT IS NULL THEN D.TEST_VAL ELSE NULL END)SSS
            FROM QC_QCTEST_DATA D,QC_TEST T,QC_DEVICE Q,QC_QCTEST_BATCH B 
            WHERE D.DEV_ID=1715
            AND TO_CHAR(D.TEST_DATE_TIME,'yyyy-MM')='2013-05'
            AND B.TYPE=2
            AND D.BATCH_ID=B.ID
            AND D.DEV_ID=Q.ID
            AND D.TEST_ID=T.ID 
            GROUP BY D.TEST_ID,Q.NAME,T.NAME,B.AVE,B.SD,B.TYPE,B.Batch_No)tmp
      

  5.   

    我最后就写的子查询,怎么实现“结果当变量传给这个sql”存储过程可以么?
    要不用两条语句?我不会存储过程,子查询可以做出来
      

  6.   


    因为D.TEST_VAL那不行
    给里面的查询列再加个d.test不就完了。
      

  7.   


    因为D.TEST_VAL那不行
    给里面的查询列再加个d.test不就完了。
    因为D.TEST_VAL那不行
    给里面的查询列再加个d.test不就完了。不能加每个d.test_val值不一样