SQL:一个表中的所有记录,以及另一表中的所有记录,包括null

莱蒙克

使用SQL Server 2008。

大家好,我有一张桌子,叫Language我需要这张桌子是LanguageID(1-10)。
我有另一个表UserQuiz,我需要ModuleIDCOUNT()的Passed。
该计划将显示4种模块的10种语言,并通过用户计数。

因此它将是40个记录(语言ID *模块ID)。
但是,并非所有语言都具有“所有模块”,因此没有任何记录。

我需要一个查询,该查询将仅填写缺少的模块,并将null记录在usercount记录中。

到目前为止,我已经尝试过...

更新日期:: 29/08/2013 @ 10:35 am(GMT)。

CREATE TABLE #CrossTable(
LanguageID int,
ModuleID int
)
INSERT INTO #CrossTable
SELECT LanguageID, ModuleID 
FROM 
RoundupAcademy.dbo.Languages
CROSS JOIN
RoundupAcademy.dbo.CurrentModules
/*********************************************************************************/

/** get users via date and quiz **************************************************/
CREATE TABLE #userspassed(
userid int,
passed int,
moduleid int,
languageid int
)
INSERT INTO #userspassed
SELECT userprofile.UserId, passed, userquiz.moduleID, LanguageId
FROM 
UserProfile
LEFT JOIN 
UserQuiz
ON
UserProfile.UserId = UserQuiz.userID
WHERE
((Convert(datetime,LastLogin, 120) >= 
    Convert(datetime,@datefrom, 120) 
AND (Convert(datetime,LastLogin, 120) <= 
        convert(datetime,@datetoo, 120))))
AND
(passed is null or passed = 1)
/*********************************************************************************/

/**Get Modules per language count on users passed ********************************/
SELECT 
#CrossTable.languageID, 
#CrossTable.ModuleID,
coalesce(COUNT(#userspassed.userID),0) as users 
FROM 
#CrossTable
LEFT JOIN
#userspassed
ON 
#CrossTable.ModuleID = #userspassed.moduleID
GROUP BY #CrossTable.LanguageID, #CrossTable.ModuleID

/*********************************************************************************/

这确实会带回40条记录,但是针对语言重复10次的模块“ n”也具有重复的Users(count)。似乎只有4个值将应用于模块1的10种语言(值94)和模块2的10种语言(值89)以及模块3的10种语言(值104)和模块4的10种语言(值28)。

每个记录应该是不同的,但似乎它会将相同的值应用于相同的所有模块。

更新日期:: 29/08/2013 @ 11:05 am(GMT)。

我忘了加

AND 
#CrossTable.LanguageID = #userspassed.languageid

现在似乎可以正常工作了,只是要检查值是否正确

斯蒂芬·奥弗林

也许也链接到JOIN上的语言。另外,您也不需要在COUNT上使用COALESCE:

SELECT 
    #CrossTable.languageID, 
    #CrossTable.ModuleID,
    COUNT(#userspassed.userID) as users 
FROM 
    #CrossTable
LEFT JOIN
    #userspassed ON 
      #CrossTable.LanguageID = #userspassed.languageid
      AND #CrossTable.ModuleeID = #userspassed.moduleid
GROUP BY #CrossTable.LanguageID, #CrossTable.ModuleID

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除一个表中未被另一表引用的所有行

来自分类Dev

即使JOINed表中没有对应的记录,如何从一个表中获取所有记录?

来自分类Dev

flask-sqlalchemy:查询一个表中的记录,而另一表中没有相关记录(或某个值的记录)

来自分类Dev

MySQL-如何获取所有记录在同一表的其他列中

来自分类Dev

SQLite:从另一个表中指定的表中删除所有记录

来自分类Dev

Left Join / IS NULL如何消除一个表中存在而不是另一表中的记录?

来自分类Dev

根据一个键消除所有重复项,并保留一个表中没有在另一个表中的记录

来自分类Dev

如何使用另一个表中的所有记录作为计数列?

来自分类Dev

Django:循环一个表中的所有记录,然后从另一个表中获取字段

来自分类Dev

proc sql:将一个表中的单个行复制到另一表中的所有行

来自分类Dev

从关联的模型(表)中查找具有至少一个关联的所有记录

来自分类Dev

如何联接表以从SQL查询中的第一个表中提取所有记录

来自分类Dev

将具有标准值的另一个表的列中的所有记录插入到表中

来自分类Dev

如果所有记录都存在于SQL Server的另一个表中,则返回行列表

来自分类Dev

Laravel从一个表中查找所有记录,这些记录的顺序取决于另一个表

来自分类Dev

如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

来自分类Dev

SQL查询以在新表中为另一个表的所有ID插入同一条记录

来自分类Dev

无法连接三个表并仅返回一个表中的所有记录

来自分类Dev

SQLite查询选择另一个表中不存在的所有记录

来自分类Dev

PostgreSQL对一个表中的每一行联接另一表中的所有行

来自分类Dev

SQL连接包括一个表中的所有行,而与另一表中表示的行无关

来自分类Dev

SQLite:从另一个表中指定的表中删除所有记录

来自分类Dev

从一个表中选择所有记录并从另一个表中匹配记录

来自分类Dev

SELECT 一个表的一行,以及另一个表中的所有行

来自分类Dev

如何从另一个表中的列日期之间获取一个表中的所有记录

来自分类Dev

如何在winforms中通过c#从一个表中获取所有记录并将其保存在另一个表中?

来自分类Dev

使用 Linq 从一个表中检索不在另一表中的所有项目

来自分类Dev

如何从一个表中选择另一个表中不存在的所有记录,但在不存在的记录中返回NULL

来自分类Dev

如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

Related 相关文章

  1. 1

    删除一个表中未被另一表引用的所有行

  2. 2

    即使JOINed表中没有对应的记录,如何从一个表中获取所有记录?

  3. 3

    flask-sqlalchemy:查询一个表中的记录,而另一表中没有相关记录(或某个值的记录)

  4. 4

    MySQL-如何获取所有记录在同一表的其他列中

  5. 5

    SQLite:从另一个表中指定的表中删除所有记录

  6. 6

    Left Join / IS NULL如何消除一个表中存在而不是另一表中的记录?

  7. 7

    根据一个键消除所有重复项,并保留一个表中没有在另一个表中的记录

  8. 8

    如何使用另一个表中的所有记录作为计数列?

  9. 9

    Django:循环一个表中的所有记录,然后从另一个表中获取字段

  10. 10

    proc sql:将一个表中的单个行复制到另一表中的所有行

  11. 11

    从关联的模型(表)中查找具有至少一个关联的所有记录

  12. 12

    如何联接表以从SQL查询中的第一个表中提取所有记录

  13. 13

    将具有标准值的另一个表的列中的所有记录插入到表中

  14. 14

    如果所有记录都存在于SQL Server的另一个表中,则返回行列表

  15. 15

    Laravel从一个表中查找所有记录,这些记录的顺序取决于另一个表

  16. 16

    如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

  17. 17

    SQL查询以在新表中为另一个表的所有ID插入同一条记录

  18. 18

    无法连接三个表并仅返回一个表中的所有记录

  19. 19

    SQLite查询选择另一个表中不存在的所有记录

  20. 20

    PostgreSQL对一个表中的每一行联接另一表中的所有行

  21. 21

    SQL连接包括一个表中的所有行,而与另一表中表示的行无关

  22. 22

    SQLite:从另一个表中指定的表中删除所有记录

  23. 23

    从一个表中选择所有记录并从另一个表中匹配记录

  24. 24

    SELECT 一个表的一行,以及另一个表中的所有行

  25. 25

    如何从另一个表中的列日期之间获取一个表中的所有记录

  26. 26

    如何在winforms中通过c#从一个表中获取所有记录并将其保存在另一个表中?

  27. 27

    使用 Linq 从一个表中检索不在另一表中的所有项目

  28. 28

    如何从一个表中选择另一个表中不存在的所有记录,但在不存在的记录中返回NULL

  29. 29

    如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

热门标签

归档