Sql 语法错误case语句

Sql 语法错误case语句,sql,Sql,我试图写一个sql语句,但我得到语法错误。我知道这与我的select和case语句有关,但我无法理解。因为错误不是描述性的。我用的是红移 select school_district_teacher_ind,customer_status,initial_pay_type,(select( CASE WHEN total_line_price = 0 THEN 'free'

我试图写一个sql语句,但我得到语法错误。我知道这与我的select和case语句有关,但我无法理解。因为错误不是描述性的。我用的是红移

select school_district_teacher_ind,customer_status,initial_pay_type,(select(
             CASE 
                  WHEN total_line_price = 0  
                     THEN 'free' 
                  ELSE 'paid'
             END
             ) 
      from storiacloud.schl_storia_revenue_fact_a)as a,count(distinct convert(varchar(100),[Otc_Order_Number])+'_'+ convert(varchar(100),[Otc_Order_Line_Number]))
from storiacloud.schl_storia_revenue_fact_a  as fact
inner join  
storiacloud.schl_storia_school_status as status
on fact.school_ucn = status.ucn
where date = '11/2/2015'
group by school_district_teacher_ind,customer_status,initial_pay_type,a  
下面是错误

ERROR: Invalid Query: 
  Detail: 
  -----------------------------------------------
  error:  Invalid Query: 
  code:      8001
  context:   single-row subquery returns more than one row
  query:     5132289
  location:  25.cpp:69
  process:   padbmaster [pid=29183]
  -----------------------------------------------


Execution time: 0.16s
1 statement failed.
我期望的结果是


注:第一列客户类型是学校、地区、教师,在上述选择状态中,我认为您只需要条件聚合。查询如下所示:

select school_district_teacher_ind, customer_status, initial_pay_type,
       sum(case when total_line_price = 0 then 1 else 0 end) as free,
       sum(case when total_line_price = 0 then 0 else 1 end) as paid
from storiacloud.schl_storia_revenue_fact_a fact inner join  
     storiacloud.schl_storia_school_status status
     on fact.school_ucn = status.ucn
where date = '2015-11-02'
group by school_district_teacher_ind,customer_status, initial_pay_type; 

您的案例是一个子查询,它从与主查询相同的表中进行选择。试试这个

SELECT  school_district_teacher_ind ,
        customer_status ,
        initial_pay_type ,
        CASE WHEN total_line_price = 0 THEN 'free'
             ELSE 'paid'
        END AS a ,
        COUNT(DISTINCT CONVERT(VARCHAR(100), [Otc_Order_Number]) + '_'
              + CONVERT(VARCHAR(100), [Otc_Order_Line_Number]))
FROM    storiacloud.schl_storia_revenue_fact_a AS fact
        INNER JOIN storiacloud.schl_storia_school_status AS status ON fact.school_ucn = status.ucn
WHERE   date = '11/2/2015'
GROUP BY school_district_teacher_ind ,
        customer_status ,
        initial_pay_type ,
        CASE WHEN total_line_price = 0 THEN 'free'
             ELSE 'paid'
        END    

这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是
mysql
postgresql
sql server
oracle
db2
-还是其他完全相同的东西。大小写表达式,而不是大小写语句。。。