1:N 关系中的 SQL 查询

龙胶子

我有以下数据库,这是用户与其收据之间的简单关系:

数据库

我需要获得与用户一样多的行和尽可能多的收据。例如:

如果用户 1 有 2 个收据,我必须获得:

IdUser   Receipt 1    Receipt 2
  1         12€          13€

我尝试在 User 和 Receipt 表之间使用内部联合,但我的行用户数与他们拥有的收据一样多。

编辑

SELECT user.idUser, receipt.value
FROM user INNER JOIN receipt ON user.IdUser = receipt.IdUser;
我玩

如果您知道收据的最大数量,您可以使用以下数据透视查询获得结果:

SELECT * FROM (
SELECT   ROW_NUMBER() OVER(PARTITION BY receipt.IdUser  ORDER BY receipt.IdUser ASC) AS RowId, user.IdUser, receipt.value
  FROM user  INNER JOIN receipt ON user.IdUser = receipt.IdUser 
  )
 as s
PIVOT
(
    max(value)
    FOR RowId IN ([1], [2], <max number of the receipts> )
)AS pvt

但是如果您不知道项目的最大数量,最好使用动态枢轴

SQL Server - 动态 PIVOT 表 - SQL 注入

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章