当前位置: 代码迷 >> Sql Server >> 高手,
  详细解决方案

高手,

热度:15   发布时间:2016-04-27 11:34:10.0
高手,求救!!!!!!!!!!!!!
fi_company_name fi_order_date fi_company_dep fi_credit_channel fi_order_status fi_cxxb fi_order_date_alter
城西别克 2012-08-01 区域 上汽财务 合同 否 2012-08-10
城西别克 2012-08-01 区域 上汽财务 合同 否 2012-08-10
城西别克 2012-08-01 区域 上汽财务 申请 否 2012-08-10
南昌别克 2012-07-30 区域 GMAC 合同 否 2012-08-10
南昌别克 2012-07-29 展厅 GMAC 申请 否 2012-08-10
南昌别克 2012-07-31 展厅 GMAC 合同 否 2012-08-10
南昌别克 2012-07-31 区域 GMAC 申请 否 2012-08-10
南昌雪佛兰 2012-07-29 展厅 GMAC 申请 否 2012-08-10
南昌雪佛兰 2012-07-31 展厅 GMAC 申请 否 2012-08-12
南昌别克 2012-08-01 区域 GMAC 合同 是 2012-08-10
南昌别克 2012-10-01 区域 GMAC 合同 是 2012-08-10
南昌别克 2012-08-02 展厅 GMAC 合同 是 2012-08-10
南昌别克 2012-08-02 展厅 GMAC 申请 否 2012-08-10
南昌别克 2012-08-03 展厅 银行 申请 否 2012-08-10
南昌雪佛兰 2012-08-04 展厅 GMAC 申请 否 2012-08-10
南昌别克 2012-08-04 展厅 GMAC 合同 否 2012-08-10
南昌别克 2012-08-05 电销中心 GMAC 申请 否 2012-08-10
南昌别克 2012-08-08 电销中心 GMAC 申请 否 2012-08-10
南昌别克 2012-08-08 展厅 GMAC 合同 否 2012-08-10
南昌别克 2012-08-08 区域 银行 取消 否 2012-08-10
南昌别克 2012-08-08 展厅 GMAC 合同 是 2012-08-10
南昌雪佛兰 2012-08-09 展厅 GMAC 拒批 否 2012-08-10
南昌别克 2012-08-10 展厅 GMAC 申请 否 2012-08-10
南昌别克 2012-08-10 展厅 GMAC 合同 是 2012-09-10
南昌雪佛兰 2012-08-10 展厅 GMAC 合同 否 2012-08-10
表格,视图代码如下:
SELECT a.fi_company AS 单店, a.fi_plan AS [计划数], year([fi_plan_date]) AS [年份], 
  month([fi_plan_date]) AS [月份], SUM(CASE WHEN fi_company_dep = '展厅' AND 
  fi_order_status = '合同' THEN 1 ELSE 0 END) 展厅合同, 
  SUM(CASE WHEN fi_company_dep = '区域' AND 
  fi_order_status = '合同' THEN 1 ELSE 0 END) 区域合同, 
  SUM(CASE WHEN fi_company_dep = '电销中心' AND 
  fi_order_status = '合同' THEN 1 ELSE 0 END) 电销合同, 
  SUM(CASE WHEN fi_order_status = '合同' THEN 1 ELSE 0 END) 实际, 
  达成率 = ltrim(cast(SUM(CASE WHEN fi_order_status = '合同' THEN 1 ELSE 0 END) 
  * 100.0 / a.[fi_plan] AS decimal(9, 2))) + '%', 
  SUM(CASE WHEN fi_company_dep = '展厅' AND 
  fi_order_status = '申请' THEN 1 ELSE 0 END) 展厅申请, 
  SUM(CASE WHEN fi_company_dep = '展厅' AND 
  fi_order_status = '拒批' THEN 1 ELSE 0 END) 展厅拒批, 
  SUM(CASE WHEN fi_company_dep = '展厅' AND 
  fi_order_status = '取消' THEN 1 ELSE 0 END) 展厅取消, 
  SUM(CASE WHEN fi_company_dep = '区域' AND 
  fi_order_status = '申请' THEN 1 ELSE 0 END) 区域申请, 
  SUM(CASE WHEN fi_company_dep = '区域' AND 
  fi_order_status = '拒批' THEN 1 ELSE 0 END) 区域拒批, 
  SUM(CASE WHEN fi_company_dep = '区域' AND 
  fi_order_status = '取消' THEN 1 ELSE 0 END) 区域取消, 
  SUM(CASE WHEN fi_company_dep = '电销中心' AND 
  fi_order_status = '申请' THEN 1 ELSE 0 END) 电销申请, 
  SUM(CASE WHEN fi_company_dep = '电销中心' AND 
  fi_order_status = '拒批' THEN 1 ELSE 0 END) 电销拒批, 
  SUM(CASE WHEN fi_company_dep = '电销中心' AND 
  fi_order_status = '取消' THEN 1 ELSE 0 END) 电销取消, 
  SUM(CASE WHEN fi_cxxb = '是' AND fi_order_status = '合同' THEN 1 ELSE 0 END) 
  促销量
FROM tb_fi_plan a, tb_fi b
WHERE a.fi_company = b.fi_company_name AND year(b.fi_order_date_alter) 
  = year(GetDate()) AND month(b.fi_order_date_alter) = month(GetDate())
GROUP BY a.fi_company, year(fi_plan_date), month(fi_plan_date), a.fi_plan

为什么求出来的8、9月份南昌别克的数据都是一样的?有谁知道吗?

------解决方案--------------------
SQL code
AND year(b.fi_order_date_alter)    = year(GetDate()) AND month(b.fi_order_date_alter) = month(GetDate())--改简单点吧and convert(varchar(6),b.fi_order_date_alter,112)=convert(varchar(6),getdate(),112)
------解决方案--------------------
  相关解决方案