Q:练习:2(qwrqwr:2013-05-03)对于Battles表中存在的每个月(与年份有关),找出一周中每一天的发生次数。输出:月份(“ YYYY-MM”格式),星期一,星期二,...星期日的数量。
这是我的代码:
SELECT NAME, REPLACE(STR(YEAR(DATE),4), '', '0') + '-' +
REPLACE(STR(MONTH(DATE),2), '' , '0') + '-01',
REPLACE(STR(YEAR(DATEADD(DAY, -1, (DATEADD(MONTH, 1,
REPLACE(STR(YEAR(DATE),4), '', '0') + '-' +
REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 4), '', '', '0')
+ '-' + REPLACE(STR(MONTH(DATEADD(DAY, -1, (DATEADD(MONTH, 1,
REPLACE(STR(YEAR(DATE),4), '', '0') + '-' +
REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 2), '', '0') +
+ '-' + REPLACE(STR(DAY(DATEADD(DAY, -1, (DATEADD(MONTH, 1,
REPLACE(STR(YEAR(DATE), 4), '', '0') + '-' +
REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01)))), 2), '', '0')
FROM BATTLES
================= 结果:不正确 错误。 replace函数需要3个参数。
答案 0 :(得分:0)
您的第二个parameter
功能上还有其他replace
。
SELECT
NAME
, REPLACE(STR(YEAR(DATE),4), '', '0') + '-' + REPLACE(STR(MONTH(DATE),2), '' , '0') + '-01'
, REPLACE(STR(YEAR(DATEADD(DAY, -1, (DATEADD(MONTH, 1 , REPLACE(STR(YEAR(DATE),4), '', '0') + '-' + REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 4), '', '0') + '-' + REPLACE(STR(MONTH(DATEADD(DAY, -1 , (DATEADD(MONTH, 1, REPLACE(STR(YEAR(DATE),4), '', '0') + '-' + REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 2), '', '0') + '-' + REPLACE(STR(DAY(DATEADD(DAY, -1, (DATEADD(MONTH, 1, REPLACE(STR(YEAR(DATE), 4), '', '0') + '-' + REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 2), '', '0')
这是罪魁祸首。
REPLACE(STR(MONTH(DATE), 2), '', '0') + '-01')))), 4), '', '', '0')