我正在编写一个查询来获取字段的计数并将其分组在一起,但我希望它返回所有值,即使计数为 0。
这是我所拥有的:
SELECT COUNT(*)
,PMI
FROM Items AS AA
JOIN Headers AS BB
ON AA.DocID = BB.ID
WHERE (DocDate = CAST(CONVERT(varchar(8), GETDATE() - 1, 1) AS datetime))
AND PMI != ''
GROUP BY PMI
Run Code Online (Sandbox Code Playgroud)
这是我想看到的:
COUNT PMI
1 900330
5 900702
0 900550
0 900331
Run Code Online (Sandbox Code Playgroud)
但这就是我得到的:
COUNT PMI
1 900330
5 900702
Run Code Online (Sandbox Code Playgroud)
我以前从未需要编写查询来完成此任务,因此如果这是微不足道的,我深表歉意。
编辑:我意识到这些表并不包含我正在寻找的所有项目。我有一个名为“lookup”的查找表,其中包含我希望查询计数的所有这些项目。
编辑2:谢谢大家。通过创建视图并使用查找表和外连接使其工作。这把戏做得很精彩。
我在一个表中有一个 JSON 列,我正在解析它以创建一个视图。我在 JSON 字符串中有 120 列,它产生大约 1750 行数据。问题是,查询运行需要 17 秒,它是一个基本查询,如下所示(选择了 120 列):
SELECT JSON_VALUE(json, '$.member.firstname') as MemberFirstName
, JSON_VALUE(json, '$.member.lastname') as MemberLastName
, JSON_VALUE(json, '$.member.phone') as MemberPhone
FROM foobar
Run Code Online (Sandbox Code Playgroud)
我知道这个表会增长,我希望在使用代码创建视图之前获得更好的性能。我正在阅读一些关于创建计算列或使用DBCC PAGE函数的文章,但我想知道是否有一种不那么密集的方法来获得我们正在寻找的东西。
如果满足条件,我需要ROW_NUMBER将数据分配给特定用户.
ROW_NUMBER将正常递增,直到找到重复值.找到重复值后,我需要它使用相同的ROW_NUMBER,直到找到新值.
例如...
使用时
SELECT ROW_NUMBER() OVER (ORDER BY COMPANY) AS rownum
,Company
,Contact
FROM TABLE
Run Code Online (Sandbox Code Playgroud)
我们显然可以期待这个结果
rownum Company Contact
1 BOB'S BURGERS BOB
2 STEVE'S SARDINES STEVE
3 STEVE'S SARDINES JERRY
4 STEVE'S SARDINES MARY
5 LARRY's LOBSTER LARRY
6 CHRIS' COWS CHRIS
Run Code Online (Sandbox Code Playgroud)
我想要得到的就是这个.每当公司名称没有变化时,重复ROW_NUMBER并在公司确实更改时继续增加数字
rownum Company Contact
1 BOB'S BURGERS BOB
2 STEVE'S SARDINES STEVE
2 STEVE'S SARDINES JERRY
2 STEVE'S SARDINES MARY
3 LARRY'S LOBSTER LARRY
4 CHRIS' COWS CHRIS
Run Code Online (Sandbox Code Playgroud)
我正在使用这个条件来查看该公司是否与之前的公司名称相符.如果条件为真,则返回2
ROW_NUMBER() OVER (PARTITION BY COMPANY …Run Code Online (Sandbox Code Playgroud)