小编Ala*_*Mil的帖子

SQL中的性能差异

我在SQL Server表上有一个日期列调用dd.

dd
---------------------------
10-01-2015 00:00:00.000
22-05-2015 10:22:32.521
27-05-2015 12:30:48.310
24-12-2014 09:51:11.728
27-05-2015 02:05:40.775
....
Run Code Online (Sandbox Code Playgroud)

我需要检索dd值来自过去24小时的所有行.

我找到了3个过滤选项来获得所需的结果:

1. `dd >= getdate() - 1`
2. `dd >= dateadd(day, -1, getdate())
3. `dateadd(day, 1, dd) >= getdate()
Run Code Online (Sandbox Code Playgroud)

我的问题是:所有3个选项都将检索我需要的所有行吗?
如果是这样,它们之间有什么区别?

sql-server performance datetime query-performance

5
推荐指数
1
解决办法
87
查看次数

将 WM_CONCAT 转换为 Listagg

我的 DBA 正在将我的 oracle 数据库从 v10 升级到 v12。我有一些旧的 SP 在使用wm_concat,我需要将其更改为listagg. 有问题的代码是这样的:

Select  registration_id,package_set_id,
        REPLACE(REPLACE(WM_CONCAT(REPLACE( (case when ROW_NUMBER() over (partition by product_id,product_detail_set_id,registration_id,product_family_id,application_id,package_Set_id,
               legal_status order by packset_country)=1 then legal_status else null end), ',' , '#')) OVER (PARTITION BY PRODUCT_ID,  PRODUCT_DETAIL_SET_ID,
               REGISTRATION_ID  ,PRODUCT_FAMILY_ID,APPLICATION_ID,PACKAGE_SET_ID   ORDER BY Packset_country  ), ',' , ' | '), '#', ',') as legal_status,

        (REPLACE(REPLACE(WM_CONCAT(REPLACE(ev_code, ',' , '#')) OVER (PARTITION BY PRODUCT_ID,  PRODUCT_DETAIL_SET_ID,
               REGISTRATION_ID  ,PRODUCT_FAMILY_ID,APPLICATION_ID,PACKAGE_SET_ID   ORDER BY ev_code  ), ',' , ' | '), '#', ',')) EV_CODES, …
Run Code Online (Sandbox Code Playgroud)

sql oracle listagg wm-concat

4
推荐指数
1
解决办法
1万
查看次数