select if(xsfp.开票日期 BETWEEN to_date(date_format("${la}","%Y-%m-01")) and "${la}" or xsfp.开票日期 BETWEEN to_date(date_format(date_sub("${la}",INTERVAL 12 month),"%Y-%m-01")) and date_sub(to_date(date_format(date_sub("${la}",INTERVAL 11 month),"%Y-%m-01")),INTERVAL 1 day), xsfp.开票日期, to_date(date_format(xsfp.开票日期,"%Y-%m-01"))) as 年月, `送达方名称`, `交付主体名称`, IF(`交付主体名称` = "鞍山市永发现代办公设备有限公司","沈阳子公司",交付单位) as 交付单位, `大客户项目`, `项目名称`, `运营部门`, 大类, 中类, 小类, 品牌, 省, 市, 商品编码,外文描述, `客户创建日期`, sum(毛利*(1+税率)) as 含税毛利, SUM(`含税金额`) as 含税金额 from vm_dkh_sap_xsfp xsfp where 大客户项目 is not null and `售达方编码` not like "%BP%" and 已取消 is null AND `销售发票凭证号` not like "98%"
时间: 2023-11-14 17:06:12 浏览: 93
根据你提供的 SQL 查询语句,它包含了一个条件表达式和一些列的选择。
条件表达式部分使用了函数和操作符来构建复杂的条件逻辑。具体来说,它使用了以下几个函数和操作符:
1. `to_date(date_format("${la}","%Y-%m-01"))`:将 `${la}` 变量(日期)格式化为年-月-01 的日期格式,并转换为日期类型。这是为了获取当前月份的第一天。
2. `date_sub("${la}", INTERVAL 12 month)`:从 `${la}` 变量(日期)中减去 12 个月。这是为了获取当前日期往前推一年的日期。
3. `date_format(date_sub("${la}", INTERVAL 11 month), "%Y-%m-01")`:从 `${la}` 变量(日期)中减去 11 个月,并将结果格式化为年-月-01 的日期格式。这是为了获取当前日期往前推 11 个月的日期。
4. `date_sub(to_date(date_format(date_sub("${la}", INTERVAL 11 month), "%Y-%m-01")), INTERVAL 1 day)`:将第 3 步的结果再减去一天。这是为了获取当前日期往前推 11 个月的日期的前一天。
5. `IF(condition, true_value, false_value)`:根据条件表达式的结果选择返回值。在这个查询中,它用于根据 `交付主体名称` 判断是否为特定值,并返回对应的值。
在整个查询中,除了条件表达式部分,还有一些列的选择(如 `年月`、`送达方名称`、`交付主体名称` 等)和聚合函数(如 `SUM()`)用于计算总和。查询还包括了表名和其他条件。
请注意,这个查询可能是一个特定系统或业务场景下的查询,因此具体含义和逻辑可能需要根据实际情况进行解释和调整。
阅读全文