sql - 情况下,帮助需要 SQL
问题描述
我正在尝试进行行计数,以便可以在报告服务中使用它。下面的代码意味着行数一次又一次地计数到 40,但计数有时不会。
CASE WHEN (ROW_NUMBER()OVER (PARTITION BY SUBSTRING(Forsamling.forsamling,
1,1) ORDER BY Forsamling.forsamling) % 40) = 0 THEN 40 ELSE (ROW_NUMBER()
OVER(PARTITION BY SUBSTRING(Forsamling.forsamling, 1, 1) ORDER BY
Forsamling.forsamling) % 40) END AS SubGroupNo
我在 SQL CASE WHEN 方面不是最好的,因此感谢您的帮助。完整的代码和一些截图如下。
SELECT Forsamling.Forsamling, Forsamling.ForsamlingsNamn, Forsamling.Kommun, kommun.Kommun, kommun.KommunNamn, kommun.Lan, Lan.LansNamn, Lan.LansSuffix, Pastorat.Pastorat, Lan.Lan, Forsamling.DatumIn, Lan.DatumIn, Pastorat.DatumIn, Forsamling.DatumAvr, Lan.DatumAvr, Pastorat.DatumAvr, kommun.DatumIn, kommun.DatumAvr,
CASE WHEN (ROW_NUMBER()OVER (PARTITION BY SUBSTRING(Forsamling.forsamling, 1, 1)
ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling) % 40) = 0 THEN 40 ELSE (ROW_NUMBER() OVER (PARTITION BY SUBSTRING(Forsamling.forsamling, 1, 1)
ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling) % 40) END AS SubGroupNo
FROM
(Select Forsamling, ForsamlingsNamn, kommun, DatumIn, DatumAvr, Lan
FrOM A_Forsamling F
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01'
)AS Forsamling Cross Apply
(Select KommunNamn, kommun, DatumIn, DatumAvr, Lan
FrOM A_Kommun K
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Forsamling.Lan = K.Lan ANd Forsamling.Kommun = k.Kommun
)AS Kommun Cross Apply
(Select forsamling, kommun, pastorat, DatumIn, DatumAvr, Lan
FrOM A_Pastorat P
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Forsamling.Lan = p.Lan ANd Forsamling.Kommun = p.Kommun AND forsamling.Forsamling = p.Forsamling
)AS Pastorat Cross Apply
(Select pastorat, DatumIn, DatumAvr, Lan, LansNamn, LansSuffix
FrOM A_Lan L
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Kommun.Lan = L.Lan
)AS Lan
ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling
它似乎在完全相同的位置OO ...
解决方案
在您的查询中,您SUBSTRING(Forsamling.forsamling, 1, 1)
用于分区。将其更改为''
将解决问题。
此外,您可以通过将其更改为
SubGroupNo=(ROW_NUMBER()OVER(PARTITION BY '' ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling) - 1) % 40 + 1
完整查询:
SELECT Forsamling.Forsamling, Forsamling.ForsamlingsNamn, Forsamling.Kommun, kommun.Kommun, kommun.KommunNamn, kommun.Lan,
Lan.LansNamn, Lan.LansSuffix, Pastorat.Pastorat, Lan.Lan, Forsamling.DatumIn, Lan.DatumIn, Pastorat.DatumIn,
Forsamling.DatumAvr, Lan.DatumAvr, Pastorat.DatumAvr, kommun.DatumIn, kommun.DatumAvr,
SubGroupNo=(ROW_NUMBER()OVER(PARTITION BY '' ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling) - 1) % 40 + 1
FROM
(Select Forsamling, ForsamlingsNamn, kommun, DatumIn, DatumAvr, Lan
FrOM A_Forsamling F
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01'
)AS Forsamling Cross Apply
(Select KommunNamn, kommun, DatumIn, DatumAvr, Lan
FrOM A_Kommun K
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Forsamling.Lan = K.Lan ANd Forsamling.Kommun = k.Kommun
)AS Kommun Cross Apply
(Select forsamling, kommun, pastorat, DatumIn, DatumAvr, Lan
FrOM A_Pastorat P
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Forsamling.Lan = p.Lan ANd Forsamling.Kommun = p.Kommun AND forsamling.Forsamling = p.Forsamling
)AS Pastorat Cross Apply
(Select pastorat, DatumIn, DatumAvr, Lan, LansNamn, LansSuffix
FrOM A_Lan L
Where (DatumAvr IS NULL OR DatumAvr > '2018-01-01') AND DatumIn <= '2018-01-01' And Kommun.Lan = L.Lan
)AS Lan
ORDER BY kommun.Lan, Forsamling.Kommun, Forsamling.Forsamling
推荐阅读
- c# - 发布程序时包含 SQL Server 数据库文件
- spring - jetty-maven-plugin:启动期间的日志
- python - 如何遍历 df 的每一行/列以查看是否存在 0 或 ' '?
- angular - app.module.ts > APP_INITIALIZER 依赖于另一个
- c - 如何释放链接列表中的信息?
- python - 如何修复 Firebase_Admin 错误 TypeError: __init__() got an unexpected keyword argument 'status'
- amazon-web-services - 将字符串转换为 CommaDelimitedList Cloudformation 模板
- sql - Postgres 中的原始 SQL 与 EntityFramework Core
- python - MemoryError pandas 根据其他列值生成新列
- jquery - 延迟功能,直到图像加载 jquery