8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

似乎无法让日期参数发挥作用

Kenny Ostrom 3月前

143 0

当我不添加带有日期的最后一个 AND 语句时,以下查询有效。但是,当我添加它时,找不到任何结果。我知道这不是真的,因为我将数据填充到引擎中并且知道...

当我不添加 AND 带有日期的最后一个语句时,以下查询有效。但是,当我添加它时,找不到任何结果。我知道这不是真的,因为我将数据填充到引擎中并且知道它在那里。我只是不能以这种方式查询它。你知道为什么吗?

SELECT *
FROM
     othertablename HOS
     INNER JOIN tablename OBS ON HOS.unique_id = OBS.unique_id
WHERE
     (HOS.result LIKE 'Pos%' OR HOS.result LIKE 'Detect%')
     AND hos.loinc IN ('100156-9',...'99825-2')
     AND HOS.specimen_col_dt > '01-MAY-24'

我原本期望得到填充了数据的行,但添加此行后什么也没有得到 AND HOS.specimen_col_dt > '01-MAY-24' 。如果我去掉那部分,我就会得到数据。

帖子版权声明 1、本帖标题:似乎无法让日期参数发挥作用
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Kenny Ostrom在本站《sql》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 通过正确标记来开始您的问题。日期函数因不同的 dbms 而异。那么您使用的是哪种 dbms???

  • 并且字符串格式中正确的日期格式因 RDBMS 而异,并且通常还取决于区域设置。

  • Jimi 3月前 0 只看Ta
    引用 4

    我有一个数据集,其中的行对应于在不同时间点收集的数据,如下所示: metricdateFYresult visits03/01/2024FY2417 visits04/01/2024FY2421 visits05/01/2024FY2434

    我有一个数据集,其中的行对应于在不同时间点收集的数据,如下所示:

    度量 日期 我的 结果
    访问 2024 年 3 月 1 日 24 财年 17
    访问 2024 年 4 月 1 日 24 财年 21
    访问 2024 年 5 月 1 日 24 财年 三十四
    访问 2024 年 6 月 1 日 25财年 99
    访问 2024 年 7 月 1 日 25财年 11
    访问 2024 年 8 月 1 日 25财年 二十七

    我想添加一列,显示结果列中的值:(a) 与当前月份位于同一财政年度,并且 (b) 是最远的 - 数据集中的每个指标都没有 12 个月前的值,有些可能有 3 个月或 7 个月或 11 个月的值,等等...

    期望输出:

    度量 日期 我的 结果 一年前
    访问 2024 年 3 月 1 日 24 财年 17 17
    访问 2024 年 4 月 1 日 24 财年 21 17
    访问 2024 年 5 月 1 日 24 财年 三十四 17
    访问 2024 年 6 月 1 日 25财年 99 99
    访问 2024 年 7 月 1 日 25财年 11 99
    访问 2024 年 8 月 1 日 25财年 二十七 99

    我尝试在 case 语句中使用 LAG 循环遍历前 12 个月,但它却返回 0,不确定多个表达式是否匹配或不匹配字符串和整数?

    CASE 
        WHEN result <> 0 AND LAG(FY,1) = FY THEN COALESCE(LAG(result,1) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,2) = FY THEN COALESCE(LAG(result,2) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,3) = FY THEN COALESCE(LAG(result,3) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,4) = FY THEN COALESCE(LAG(result,4) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,5) = FY THEN COALESCE(LAG(result,5) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,6) = FY THEN COALESCE(LAG(result,6) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,7) = FY THEN COALESCE(LAG(result,7) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,8) = FY THEN COALESCE(LAG(result,8) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,9) = FY THEN COALESCE(LAG(result,9) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,10) = FY THEN COALESCE(LAG(result,10) OVER (PARTITION BY date ORDER BY date),0)
        WHEN result <> 0 AND LAG(FY,11) = FY THEN COALESCE(LAG(result,11) OVER (PARTITION BY date ORDER BY date),0)
    ELSE 0
    END AS year_ago
    
  • 您的财务年度是如何计算的?在您的样本数据中,您有日期:2022 年 8 月 1 日和 FY24,这是怎么可能的?

  • 通过使用窗口函数和条件聚合,您的要求很容易实现:

    WITH cte AS (
        SELECT t.*, MIN(date) OVER (PARTITION BY FY) AS min_date
        FROM yourTable t
    )
    
    SELECT metric, date, FY, result,
           MAX(CASE WHEN date = min_date THEN result END) OVER (PARTITION BY FY) year_ago
    FROM cte
    ORDER BY FY, date;
    
  • 以下是一种方法:

    select 
         metric
       , dte
       , FY
       , result
       , (  select min(result)
            from MyTbl b
            where a.metric=b.metric
            and a.FY=b.FY
            and dte=(select min(dte)
                    from MyTbl c
                    where c.metric=b.metric
                    and c.FY=b.FY
                    )
        ) as EarliestResultInFY
    from MyTbl a
    

    对于表格(a)中的每一行,我们找到同一 [metric, FY](别名 b)的所有行,并将它们限制为同一 [metric, FY](别名 c)的最早日期。

    第二个最小值(别名 'b')用于保证单行(对于每个 a),以防同一 [metric, date, FY] 有多行。

  • 我遇到了来自 SQL DB 的 NULL 值错误。以下是模式:CREATE TABLE product(id INT not null、name text not null、price int not null);INSERT INTO product(id、name、

    我遇到了来自 SQL DB 的 NULL 值错误。

    以下是 架构

    CREATE TABLE product (
      id INT not null,
      name text not null,
      price int not null
    );
    INSERT INTO product (id, name, price) VALUES (1, 'PR1', 100);
    INSERT INTO product (id, name, price) VALUES (2, 'PR2', 200);
    
    CREATE TABLE discount (
      id INT not null,
      percentage int not null,
      product_id int not null
    );
    INSERT INTO discount (id, percentage, product_id) VALUES (1, 10, 1);
    

    如您所见,数据库中不应有任何空值。

    这是我的 结构

    type Product struct{
     Id int `db:"id"`
     Name string `db:"name"`
     Price int `db:"price"`
    }
    
    type Discount struct {
     Id int `db:"id"`
     Percentage int `db:"percentage"`
     Product_id int `db:"product_id"`
    }
    

    我的问题是:

    我应该如何嵌入我的结构以便能够处理 JOIN 查询。

    1. 使用 INNER JOIN 没有问题
    2. 时, LEFT JOIN 存在问题 NULL 。以下是查询enter image description here

    另外,我不想到处使用指针,有没有什么优雅的方法可以解决这个问题。

    还有一件事,PostgreSQL 中还有 COALESC ,即使没有它我该如何解决它。

  • 这是应用程序中使用的表之一,它返回票证的引用。\'ticket 是表中的主键和唯一键。有时我会遇到记录不可用的问题......

    Table structure

    这是应用程序中使用的表之一,它返回票证的引用。\'ticket 是表中的主键和唯一键。有时我会遇到表中没有记录的问题。因此,我假设读取请求在将数据插入表之前发出。插入数据和读取数据的请求的时间差是几毫秒。所以我无法追踪为什么表中没有数据的问题。

    我想尝试改变存储引擎看看是否可以提高插入性能。

  • 引用 10

    \'我假设读取请求是在将数据插入表之前发出的\' - 那么很明显数据不存在。任何数据库存储引擎如何能够读取尚未插入的数据?

  • 正如@NicoHaase 所说,如果你先读后写,那么就没什么可期待的。分享代码,这样人们就可以评论/建议如何修复(如果可以修复的话)。注意:不要截图,复制/粘贴代码。

  • 这不是你在数据库中可以解决的问题。如果读取者需要等待写入者,你需要与其他机制进行协调。

  • 我正在使用 PHP 和 Symfony 以及 MySQL。每当我尝试输入“selection”时,它总是保存为“ion”。如果我尝试从网络上修复它,它说它已保存但实际上显示“ion”。然后我必须 f...

    我正在使用 PHP 和 Symfony 与 MySQL。

    每当我尝试输入“选择”时,它总是保存为“离子”。

    如果我尝试从网上修复它,它说它已保存但实际上显示“ion”。然后我必须在 MySQL 中修复它。它发生在数据库中的每个表中。这只发生在“selection”关键字上。我试图找到触发器,但实际上没有触发器。

    enter image description here

  • 如上所述 - 我们可以简单地猜测发生了什么,而无需任何相关代码。跟踪 PHP 从表单接收请求的代码,并查看它去了哪里。看看您是否可以一直找到它插入数据库的位置。中间的某个地方就是您的问题区域。然后发布一个

  • 但正如所指出的,作为一种业余注入预防尝试,过滤掉 SQL 命令听起来可能有些荒谬,这实际上没有什么意义,而且不太可能真正有效。它还会在不应该删除有效数据时删除有效数据,这显然是不可取的。所以不管它是什么,可能都需要删除,并用正确使用的准备好的语句和参数替换。或者,如果您确实在使用 Symfony(根据您的标签),那么请考虑使用其 Doctrine ORM 来满足您的数据访问需求。

返回
作者最近主题: