我有一个有趣的SQL问题,我需要帮助.
以下是示例数据集:
Warehouse DateStamp TimeStamp ItemNumber ID
A 8/1/2009 10001 abc 1
B 8/1/2009 10002 abc 1
A 8/3/2009 12144 qrs 5
C 8/3/2009 12143 qrs 5
D 8/5/2009 6754 xyz 6
B 8/5/2009 6755 xyz 6
Run Code Online (Sandbox Code Playgroud)
此数据集表示两个仓库之间的库存转移.有两个记录代表每次传输,这两个传输记录总是具有相同的ItemNumber,DateStamp和ID.两个传输记录的TimeStamp值始终为1,其中较小的TimeStamp表示源仓库记录,较大的TimeStamp表示目标仓库记录.
使用上面的示例数据集,这是我需要的查询结果集:
Warehouse_Source Warehouse_Destination ItemNumber DateStamp
A B abc 8/1/2009
C A qrs 8/3/2009
D B xyz 8/5/2009
Run Code Online (Sandbox Code Playgroud)
我可以编写代码来生成所需的结果集,但我想知道这个记录组合是否可以通过SQL实现.我使用SQL Server 2005作为我的底层数据库.我还需要向SQL添加一个WHERE子句,例如,我可以在Warehouse_Source = A上搜索.不,我无法更改数据模型;).
任何意见是极大的赞赏!
问候,马克
我试着记录代码来更新一个pivot sourcedata,它给了我这个:
ActiveSheet.PivotTableWizard SourceType:=xlExternal, _
SourceData:=QueryArry1, _
Connection:=Array( _
Array("ODBC;DSN=MS Access Database;DBQ=" & DBDir & "\" & DBName & ";"), _
Array("DefaultDir=" & DBDir & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;") _
)
Run Code Online (Sandbox Code Playgroud)
但这甚至不允许我指定我想要更新的WHICH数据透视表...甚至做我真正想做的事情,即更新pivotcache以便更新使用相同源的所有数据透视表.
那么更新sourcedata的好方法是什么?
谢谢
编辑:
但我甚至得到了"应用程序定义或对象定义的错误"错误,其中包含以下简单内容:
str = Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText
Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText = str
Run Code Online (Sandbox Code Playgroud)
我确实仔细检查了我的数据透视表仍在点击实时数据并刷新它仍然有效...但我不能将命令字符串设置为当前的状态?太奇怪了.
谢谢
我有一个具有以下结构的表:
Col1 Col2
---------------
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
我需要以这样的方式查询输出应该是这样的:
ColumnName | ColumnValue
----------------------------
Col1 1
Col2 2
Col1 3
Col2 4
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数据库.我无法更改兼容级别,因此数据库已关闭. …
我喜欢将它作为单个查询来做,但我认为它需要一个游标.如果我不能将它作为单个查询执行,我想将结果输出为SYS_REFCURSOR.一个简化的例子:
ID NAME Part Number SKU
------------------------------------
1 Widgetizer 150 1001
2 Widgetizer200 200 1002
3 WidgetizerDlx 250 1003
Run Code Online (Sandbox Code Playgroud)
P_ID NAME VALUE
----------------------------
1 WEIGHT 5
1 HEIGHT 10
1 VERSION 1
1 COLOR RED
2 WEIGHT 7
2 HEIGHT 10
2 VERSION 2
2 COLOR BLUE
Run Code Online (Sandbox Code Playgroud)
查询:
对于SKU小于1003的每种产品,请返回:
Product name, part #, SKU, WEIGHT, HEIGHT, COLOR
Run Code Online (Sandbox Code Playgroud) 有什么方法可以将SQL表中的数据从行列转换为列行?
还允许过滤器/在初始查询中应用条件的位置.
使用SQL Server 2008.
现有表具有以下列:AID(nvarchar唯一)ASID(nvarchar唯一)里程碑(M1,M2,M3 ... M100)MilestoneDate(datetime)
转置数据如下:AID,ASID,M1日期,M2日期,M3日期,M5日期
我有一张桌子.
/------------------------------------\
| LocID | Year | Birth | Death | Abc |
|------------------------------------|
| 1 | 2011 | 100 | 60 | 10 |
|------------------------------------|
| 1 | 2012 | 98 | 70 | 20 |
|..... |
\------------------------------------/
Run Code Online (Sandbox Code Playgroud)
我需要输出(Condition LocID = 1)
/---------------------\
| Event | 2011 | 2012 |
|---------------------|
| Birth | 100 | 98 |
|---------------------|
| Death | 60 | 70 |
|---------------------|
| Abc | 10 | 20 |
\---------------------/
Run Code Online (Sandbox Code Playgroud)
该表可能包含更多基于各种要求的字段...因此行数将取决于字段数(忽略LOCID和YEAR).列是不变的.仅为2年(将给予年度2012年,然后需要显示2011年和2012年).
基本上需要将列名称作为行值,列值作为列标题...
任何帮助......
我有以下源数据(数据是几百行源的提取.):
ID CodeID Code
3749 69 354
3750 69 864
33721 130 XXX
33722 130 319
30446 159 XXX
30447 159 XXX
Run Code Online (Sandbox Code Playgroud)
并使用T-SQL我需要实现:
CodeID Code1 Code2
69 354 864
130 XXX 319
159 XXX XXX
Run Code Online (Sandbox Code Playgroud)
这似乎不适合数据透视表的结构,我不知道如何实现这一点.有没有人有什么建议.
我怎么转这个:

还有这个:

进入这个:

在SQL Server 2008 R2中?
我有一个表,可以按小时计算一周的数据.
这是表结构(一天):
dayId HourId amount category
--------------------------------
1 9 1 a
1 9 1 b
1 9 1 c
1 9 1 d
1 10 1 a
1 10 1 b
1 10 1 c
1 10 1 d
1 11 1 a
1 11 1 b
1 11 0 c
1 11 1 d
1 12 0 a
1 12 2 b
1 12 2 c
1 12 2 d
Run Code Online (Sandbox Code Playgroud)
我使用pivot来查看日常金额分布如下:
select
dayid,
[9],
[10],
[11],
[12]
from
(select …Run Code Online (Sandbox Code Playgroud)