我有一个数据集,我需要对价格和圆形到小数位进行计算。但结果并不是预期的结果。计算在案例陈述中
CREATE TABLE #Temp ( ID INT IDENTITY(1,1), Price DECIMAL(7,2) )
INSERT INTO #TEMP ( Price )
VALUES ( 119.99 )
, ( 48.99 )
SELECT
ID
, Price
, CASE WHEN Price > 10 THEN CONVERT( DECIMAL(7,2), Price * 1.08 - 0.05 ) END AS RRP
FROM #Temp
DROP TABLE #Temp
结果
ID Price RRP
1 119.99 129.54
2 48.99 52.86
如果可以与另一个数据集匹配,我需要在同一个案例陈述中得到129.54到129.55和52.86到52.85
答案 0 :(得分:1)
你是否四舍五入到最接近的5美分,因为你的国家已经摆脱了一分钱?这是我们可以遵循预期结果的唯一逻辑。
@Entity
@Table(name="B")
public class BEntity implements FieldHandled{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToOne(mappedBy = "b", cascade = CascadeType.ALL, optional = true,
fetch = FetchType.LAZY)
private AEntity a;
...
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = false)
protected Date someDate;
public AEntity getA() {
if (fieldHandler != null) {
return (AEntity) fieldHandler.readObject(this, "a", a);
}
return notificacion;
}
public void setA(AEntity a) {
if (fieldHandler != null) {
this.a = (AEntity) fieldHandler.writeObject(this, "a", this.a,
a);
return;
}
this.a = a;
}
}
答案 1 :(得分:0)
假设您要在小数点后100位舍入到最接近的5美分或近5。
INSERT INTO #TEMP ( Price )
VALUES ( 119.99 )
, ( 48.99 )
SELECT
ID
, Price
, Price * 1.08 - 0.05
, CASE WHEN Price > 10 THEN CONVERT( DECIMAL(7,2), round((Price * 1.08 - 0.05)*20,0)/20) END AS RRP
FROM #Temp