我有一个以
形式返回数据的查询$files = Get-AzureStorageFile -ShareName $shareName -Context $ctx | where {$_.GetType().Name -eq "CloudFile"}
foreach($file in $files) {
$file.FetchAttributes();
if ($file.Properties.LastModified -ge $fromDate) {
# Download file
Get-AzureStorageFileContent -File $file -Destination $downloadDir
}
}
如何让它返回像
这样的数据[SetID],[COLID],[DataValue],[Order].
1,1,'Value1',1
1,1,'Value2',2
1,1,'Value3',3
1,2,'value4',1
1,2,'Value5',2
1,2,'Value6',3
使用每个columnid标记的数据返回到列中。 答案似乎是某种支点,但我不是在寻找直接转换或单行答案。
答案 0 :(得分:0)
为了能够将每个数据值放入单独的列中,您需要知道每个数据的 DataValues 和ColId
的数量。您不能动态返回可变数量的列(除非您使用动态SQL动态构造查询),而且每行需要具有相同数量的列,否则表结构没有意义
这是一个可以快速测试的示例,它使用内存表。
根据表 MyTable :
declare @MyTable table (SetId int, ColId int, DataValue varchar(20), [Order] int);
insert into @MyTable values (1,1,'Value1',1)
insert into @MyTable values (1,1,'Value2',2)
insert into @MyTable values (1,1,'Value3',3)
insert into @MyTable values (1,2,'Value4',1)
insert into @MyTable values (1,2,'Value5',2)
insert into @MyTable values (1,2,'Value6',3)
此查询将在单独的列中返回值:
select mt.SetId,
( select top 1 m1.DataValue from @MyTable m1
where m1.SetId = mt.SetId and
m1.[Order] = mt.[Order] and
m1.ColId = 1 -- hard-coded ColId, you need to know its value
) 'val1',
( select top 1 m1.DataValue from @MyTable m1
where m1.SetId = mt.SetId and
m1.[Order] = mt.[Order] and
m1.ColId = 2 -- same as above
) 'val2', mt.[Order]
from @MyTable mt
group by mt.SetId, mt.[Order]
结果:
+-----------------------------------+
| SetId | Val1 | Val2 | Order |
|-------+---------+--------+--------|
| 1 | Value1 | Value4 | 1 |
|-------+---------+--------+--------|
| 1 | Value2 | Value5 | 2 |
|-------+---------+--------+--------|
| 1 | Value3 | Value6 | 3 |
+-----------------------------------+
但是,我建议将所有数据值填充到一列(由分隔符分隔),因为这将适用于任意数量的数据值。这是查询:
select mt.SetId,
stuff(( select ', '+ m2.DataValue
from @MyTable m2
where mt.SetId = m2.SetId and
mt.[Order] = m2.[Order]
FOR XML PATH('')) , 1, 2, '') 'DataValues',
mt.[Order]
from @MyTable mt
group by mt.SetId, mt.[Order]
结果
+----------------------------------+
| SetId | DataValues | Order |
|-------+------------------+-------|
| 1 | Value1, Value4 | 1 |
|-------+------------------+-------|
| 1 | Value2, Value5 | 2 |
|-------+------------------+-------|
| 1 | Value3, Value6 | 3 |
+-------+------------------+-------+