谁帮我把下面的sql server的语句换成支持mysql的

laolaoliu2002 2008-10-20 11:57:06
1、
UPDATE Record
SET OverTime = (CASE WHEN
DATEDIFF(D,
CAST((CONVERT(CHAR(11),BeginDate,120 )
+ CONVERT(CHAR(8),BeginTime,108)) AS DATETIME) ,
CAST((CONVERT(CHAR(11),EndDate ,120 )
+ CONVERT(CHAR(8),EndTime ,108)) AS DATETIME))
> PrescribeTime
THEN 1 ELSE 0 END)

2、

--SELECT * FROM CALC
DECLARE @S VARCHAR(8000)
SET @S = ''

SELECT @S = @S + (SELECT JSGS FROM CALC WHERE autoid = 1)
+ '+(CASE WHEN a.OverTime = 1 THEN '
+ (SELECT JSGS FROM CALC WHERE autoid = 2)
+ ' ELSE 0 END)'

SET @S ='SELECT
a.autoid,
a.CarID,
a.DriverID,
a.WorkerID,
'+@S+'+ISNULL(SUM(B.money),0) as Money
FROM
(SELECT *,
DATEDIFF(D,
CAST((CONVERT(CHAR(11),BeginDate,120 )
+ CONVERT(CHAR(8),BeginTime,108)) AS DATETIME) ,
CAST((CONVERT(CHAR(11),EndDate ,120 )
+ CONVERT(CHAR(8),EndTime ,108)) AS DATETIME)) - PrescribeTime AS RunTime
FROM Record) a
LEFT JOIN
MoneyDef b
ON
a.autoid = b.runcarid
GROUP BY
a.autoid,
a.RunTime,
a.RunLong,
a.OverTime,
a.CarID,
a.DriverID,
a.WorkerID'

EXEC(@S)


...全文
47 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
laolaoliu2002 2008-10-20
  • 打赏
  • 举报
回复
--派车单主表
CREATE TABLE Record (
autoid int IDENTITY (1, 1) NOT NULL ,--自动编号
CarID nvarchar (12),--车辆ID
DriverID nvarchar (50),--驾驶员ID
WorkerID nvarchar (12),--人员ID
BeginDate datetime NULL ,--开始日期
BeginTime datetime NULL ,--开始时间
EndDate datetime NULL ,--结束日期
EndTime datetime NULL ,--结束时间
PrescribeTime real NULL ,--额定时间(单位为小时)
PrescribeLong real NULL ,--额定里程(单位为KM)
RunLong real NULL ,--运行里程(单位为KM)
SFBC bit NOT NULL ,--是否包车
OverTime bit NOT NULL ,--是否超时
Money real NULL ,--合计费用
UnitMoney real NULL ,--单位承担费用
PersonMoney real NULL --个人承担费用
) ON PRIMARY
GO

--计算公式定义
CREATE TABLE Calc (
autoid int IDENTITY (1, 1) NOT NULL ,
GSID nvarchar (50),--公式编码
GSMC nvarchar (50),--公式名称
JSGS nvarchar (50)--计算公式
) ON PRIMARY
GO

--费用定义
CREATE TABLE MoneyDef (
autoid int NOT NULL ,--自动编号
runcarid int NULL ,--派车单编号
costname nvarchar (50),--费用名称
costcomment nvarchar (50),--费用说明
money decimal(18, 0) NULL --费用金额
) ON PRIMARY
GO

--现要求实现如下功能:
--1、当EndDate与EndTime组合在一起的时间减去BeginDate与BeginTime组合在一起的时间大于PrescribeTime时,把OverTime改为1否则为0
--2、计算费用:
-- 1)在Record中的一条记录为一次派车记录,每一次派车时所发生的费用都不一致。那么,加了一个费用定义的表MoneyDef
-- 2)Record中的Money(合计费用)为MoneyDef表里面的runcarid等于Record表里面的autoid的所有记录的合计数
---------------------------------------------------------------------------------------------------------------
原来的一个帖子
WWWWA 2008-10-20
  • 打赏
  • 举报
回复
1、实际上最重要的是CONVERT(CHAR(11),BeginDate,120 ),MYSQL没有这种写法,贴记录
及要求结果出来看看,即转换结果贴出来看看。
2、同样有上述问题,MYSQL动态运行SQL语句方法与SQLSERVER不一样。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧