统计运单表(T_CRE_WAYBILL_HEAD)中状态为“东方丝路已确认”,并且有效标志为1,提交时间在所选年份内的数据,按月份统计箱量。40尺箱:箱型代码(CTNR_TYPE)以“40”开头,算2标箱。 20尺箱:箱型代码以“20”开头,算1标箱。
时间: 2024-02-24 10:53:53 浏览: 51
好的,根据您的要求,可以使用如下的 SQL 语句来查询数据:
```
SELECT
DATE_FORMAT(submit_time, '%Y-%m') AS month,
SUM(CASE WHEN ctnr_type LIKE '20%' THEN 1
WHEN ctnr_type LIKE '40%' THEN 2 ELSE 0 END) AS container_count
FROM
T_CRE_WAYBILL_HEAD
WHERE
status = '东方丝路已确认'
AND valid_flag = 1
AND YEAR(submit_time) = [所选年份]
GROUP BY
DATE_FORMAT(submit_time, '%Y-%m')
```
其中,将 `submit_time` 字段按月份格式化,然后使用 `SUM` 函数统计每个月份下的标箱数,对于 20 尺箱,算作 1 标箱,40 尺箱,算作 2 标箱。使用 `CASE WHEN` 条件语句来进行判断。将 `[所选年份]` 替换为需要查询的年份即可。
相关问题
统计运单表(T_CRE_WAYBILL_HEAD)中状态为“东方丝路已确认”,并且有效标志为1,提交时间在所选年份内的数据,按月份统计箱量。
好的,根据您的要求,可以使用如下的 SQL 语句来查询数据:
```
SELECT
DATE_FORMAT(submit_time, '%Y-%m') AS month,
COUNT(DISTINCT container_no) AS container_count
FROM
T_CRE_WAYBILL_HEAD
WHERE
status = '东方丝路已确认'
AND valid_flag = 1
AND YEAR(submit_time) = [所选年份]
GROUP BY
DATE_FORMAT(submit_time, '%Y-%m')
```
其中,将 `submit_time` 字段按月份格式化,然后使用 `COUNT(DISTINCT container_no)` 统计每个月份下的唯一 `container_no` 数量,并使用 `GROUP BY` 对月份进行分组。将 `[所选年份]` 替换为需要查询的年份即可。
查询 T_CRE_WAYBILL_HEAD 条件 SENDER_STATEMENT中 此柜目的地为XXXX 的后面两个字 是 波兰”则值为波兰 或者德国 值为德国,如果是其他值,视为波兰,如果发货人声明为空或没有取到,视为“波兰”
您的问题是查询 T_CRE_WAYBILL_HEAD 表中符合以下条件的记录:发货人声明中此柜目的地为“XXXX”的后面两个字是“波兰”则值为“波兰”,或者是“德国”则值为“德国”,如果是其他值,则视为“波兰”,如果发货人声明为空或没有取到,也视为“波兰”?
如果是这样,您可以使用以下 SQL 语句进行查询:
```
SELECT *,
CASE
WHEN SENDER_STATEMENT LIKE '%XXXX 波兰' THEN '波兰'
WHEN SENDER_STATEMENT LIKE '%XXXX 德国' THEN '德国'
ELSE '波兰'
END AS DESTINATION
FROM T_CRE_WAYBILL_HEAD
```
这个查询语句会返回符合条件的所有记录,并且根据发货人声明中的值计算出一个名为“DESTINATION”的新字段。如果发货人声明中此柜目的地为“XXXX”的后面两个字是“波兰”,则“DESTINATION”字段的值为“波兰”;如果是“德国”,则“DESTINATION”字段的值为“德国”;否则,“DESTINATION”字段的值为“波兰”。如果发货人声明为空或没有取到,则“DESTINATION”字段的值也为“波兰”。
阅读全文