相关疑难解决方法(0)

SQL服务器:将行转换为列

我有一个列的表sales(int),month(int).我想检索每个月对应的销售总额.我需要以每个月对应的12列的形式输出,其中将有一个包含每列(月)销售额的记录.

t-sql sql-server rows

8
推荐指数
1
解决办法
2万
查看次数

在单行中获取数据

我有两个表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)

请建议我怎样才能实现这个目标.

sql sql-server sql-server-2008

1
推荐指数
1
解决办法
99
查看次数

如何在SQL Server 2005中不使用数据透视表将一堆行转换为聚合列?

这是一个场景:我有一个表记录了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数据库.我无法更改兼容级别,因此数据库已关闭. …

sql sql-server pivot sql-server-2005

0
推荐指数
1
解决办法
1305
查看次数

标签 统计

sql-server ×3

sql ×2

pivot ×1

rows ×1

sql-server-2005 ×1

sql-server-2008 ×1

t-sql ×1