数据库按要求查询指定字段

数据库查询指定字段
表名是mouth 需要查询的字段是cumulative 放的是仪器每个月的变化值 一个月只有一个变化值
要求是:变化值只有一年就显示12个月的变化值
变化值是2-5年就显示每两个月的变化值
6年以上的变化值就显示每年的变化值

源于ChatGPT仅供参考

要根据不同的时间范围显示不同的变化值,您可以使用以下SQL查询来满足您的需求:

```sql
SELECT cumulative
FROM mouth
WHERE 
    (DATEDIFF(CURDATE(), date) <= 12 AND DATEDIFF(CURDATE(), date) % 1 = 0) -- 显示最近一年的每个月的变化值
    OR
    (DATEDIFF(CURDATE(), date) > 12 AND DATEDIFF(CURDATE(), date) <= 60 AND DATEDIFF(CURDATE(), date) % 2 = 0) -- 显示2-5年之间每两个月的变化值
    OR
    (DATEDIFF(CURDATE(), date) > 60 AND DATEDIFF(CURDATE(), date) % 12 = 0) -- 显示6年以上每年的变化值

这个查询将根据日期字段(date)与当前日期(CURDATE())的差异,选择性地显示符合条件的变化值。注意,你需要将mouth替换为实际的表名,cumulative替换为实际的字段名,以及date替换为保存日期的字段名。

```


SELECT cumulative,
       CASE 
          WHEN DATEDIFF(CURDATE(), date_column) <= 365 THEN '每月变化值'
          WHEN DATEDIFF(CURDATE(), date_column) <= 1825 THEN '每两个月变化值'
          ELSE '每年变化值'
       END AS 变化值类型
FROM mouth

基于new bing部分指引作答:
根据您的需求,可以使用以下 SQL 查询语句来获取不同时间范围内的变化值:

SELECT cumulative 
FROM mouth 
WHERE 
    (DATEDIFF(YEAR, DATE_COLUMN, GETDATE()) = 1 AND MONTH(DATE_COLUMN) <= 12) OR -- 一年内显示每个月的变化值
    (DATEDIFF(YEAR, DATE_COLUMN, GETDATE()) BETWEEN 2 AND 5 AND MONTH(DATE_COLUMN) % 2 = 0) OR -- 2-5年内显示每两个月的变化值
    (DATEDIFF(YEAR, DATE_COLUMN, GETDATE()) >= 6 AND MONTH(DATE_COLUMN) = 1) -- 6年以上显示每年的变化值

请注意进行以下替换:

  • mouth:表名。
  • cumulative:变化值字段名。
  • DATE_COLUMN:日期字段名,请将其替换为实际存储变化值日期的列名。

此查询语句会根据日期和当前日期进行比较,并根据条件返回不同时间范围内的变化值。