我有一个列的表sales(int),month(int).我想检索每个月对应的销售总额.我需要以每个月对应的12列的形式输出,其中将有一个包含每列(月)销售额的记录.
我有两个表PackageDetail和PackageDuration PackageDuration将PackageID作为外键,即可以有多个关于PackageID的记录
PackageDetail的架构是:
PackageID INT PK
PackageName Nvarchar(50)
Run Code Online (Sandbox Code Playgroud)
PackageDuration表的模式是:
DurationID INT PK
Price Money
Duration Nvarchar(50)
PackageID INT FPK
Run Code Online (Sandbox Code Playgroud)
PackageDetail表有以下记录:
PackageID PackageName
1 TestPackage
2 MySecondPackage
Run Code Online (Sandbox Code Playgroud)
PackageDuration表有以下记录:
DurationID PackageID Price Duration
1 1 100 6
2 1 200 12
3 1 300 24
4 2 500 6
Run Code Online (Sandbox Code Playgroud)
PackageDuration表可以有最多3条记录,其中一个PackageID不超过此值(如果忽略了)现在我想按以下方式选择记录:
PackageId PackageNAme Price1 Price2 Price3 Duration1 Duration2 Duration3
1 TestPackage 100 200 300 6 12 24
2 MySecondPackage 500 null null 6 null null
Run Code Online (Sandbox Code Playgroud)
请建议我怎样才能实现这个目标.
这是一个场景:我有一个表记录了user_id,module_id以及查看模块的日期/时间.
例如.
Table: Log
------------------------------
User_ID Module_ID Date
------------------------------
1 red 2001-01-01
1 green 2001-01-02
1 blue 2001-01-03
2 green 2001-01-04
2 blue 2001-01-05
1 red 2001-01-06
1 blue 2001-01-07
3 blue 2001-01-08
3 green 2001-01-09
3 red 2001-01-10
3 green 2001-01-11
4 white 2001-01-12
Run Code Online (Sandbox Code Playgroud)
我需要得到一个结果集,其中user_id为第1列,然后是每个模块的列.然后行数据是user_id以及用户查看每个模块的次数.
例如.
---------------------------------
User_ID red green blue white
---------------------------------
1 2 1 2 0
2 0 1 1 0
3 1 2 1 0
4 0 0 0 1
Run Code Online (Sandbox Code Playgroud)
我最初认为我可以用PIVOT做到这一点,但没有骰子; 数据库是在SQL Server 2005中运行的已转换的SQL Server 2000数据库.我无法更改兼容级别,因此数据库已关闭. …