SQL 在 1:N 关系中查询

SQL Query in an 1:N relationship

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

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

如果用户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 - Dynamic PIVOT Table - SQL Injection