我想要做的只是显示为某个客户创建的记录,该客户在某个月内只有一个以上的票号。
Select name,ticketnumber, title,
description,statename,personname,charge,createdon
from case
Where sum(ticketnumber) > 2 AND createdon >= '2017-01-01' ;
我试过了
select sum(ticketnumber) AS total
和
where sum(ticketnumber) > 2
我哪里错了? ticketnumber
是varchar
数据类型
错误即将到来;
Operand data type nvarchar is invalid for sum operator.
答案 0 :(得分:1)
要将支票限制为一个月,而不仅仅是在某个日期之后,您可以使用dateadd(month, datediff(month, 0, createdon ) , 0)
将日期截断到一个月的第一天。
假设您通过personname
识别您的客户:
使用exists()
:
select
name
, ticketnumber
, title
, description
, statename
, personname
, charge
, createdon
from [case] as c
where dateadd(month, datediff(month, 0, createdon ) , 0) = '20170101'
and exists (
select 1
from [case] as i
where --createdon >= '2017-01-01'
dateadd(month, datediff(month, 0, createdon ) , 0) = '20170101'
and i.personname = c.personname
having count(*) > 1
)
使用in()
select
name
, ticketnumber
, title
, description
, statename
, personname
, charge
, createdon
from [case]
where dateadd(month, datediff(month, 0, createdon ) , 0) = '20170101'
and personname in (
select personname
from [case] as i
where --createdon >= '2017-01-01'
dateadd(month, datediff(month, 0, createdon ) , 0) = '20170101'
group by personname
having count(*) > 1
)
答案 1 :(得分:0)
我通常只是这样做
ini_set('error_prepend_string',"<div class='error'>") ;
ini_set('error_append_string',"</div>") ;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);