真的,我想有人可以帮我解决这个问题。我想得到这个例子。我不想使用" Pivot"。我有一些名为' Serie'这显然需要一个小组,因为这重复了太多次,这就是为什么我要对它进行分组。因此,该领域的每个项目" serie"有一个从001到100的代码列表然后我只想获得该列表的最小数量,所以" 001"最大数量" 100"每个月都有。
请帮帮我吧 提前谢谢。
示例:
SERIE JAN FEB MAR APRI MAY JUN JUL
D | H D | H D | H D | H D | H D | H D | H
Recibo CA 01 10 02 50 01 10 02 50
Recibo VA-03 04 20 05 80
Recibo UV 08 40 03 10
Recibo VA-02
Recibo VA-04
Recibo VA-01
Recibo WH
Factura 0003
我的数据库中的数据就像在这里显示的那样。
Id Serie Month Serie number
1 Factura 0003 Jan 4771
2 Factura 0003 Jan 4779
3 Factura 0003 Jan 4792
4 Factura 0003 Febr 4864
5 Factura 0003 Febr 4892
答案 0 :(得分:0)
您可以通过对角矩阵乘法模拟Pivot:
With test ([Id], [Serie], [Month], [Serie number])
As (
Select 1, 'Factura 0003', 'Jan', 4771 Union
Select 2, 'Factura 0003', 'Jan', 4779 Union
Select 3, 'Factura 0003', 'Jan', 4792 Union
Select 4, 'Factura 0003', 'Feb', 4864 Union
Select 5, 'Factura 0003', 'Feb', 4892
), diagonal_matrics ([Month], [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])
As (
Select 'Jan', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'Feb', NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'Mar', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'Apr', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'May', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'Jun', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL Union
Select 'Jul', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL Union
Select 'Aug', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL Union
Select 'Sep', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL Union
Select 'Oct', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL Union
Select 'Nov', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL Union
Select 'Dec', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
)
Select [Serie],
Min([Serie number] * [Jan]) [Jan Min], Max([Serie number] * [Jan]) [Jan Max],
Min([Serie number] * [Feb]) [Feb Min], Max([Serie number] * [Feb]) [Feb Max],
Min([Serie number] * [Mar]) [Mar Min], Max([Serie number] * [Mar]) [Mar Max],
Min([Serie number] * [Apr]) [Apr Min], Max([Serie number] * [Apr]) [Apr Max],
Min([Serie number] * [May]) [May Min], Max([Serie number] * [May]) [May Max],
Min([Serie number] * [Jun]) [Jun Min], Max([Serie number] * [Jun]) [Jun Max],
Min([Serie number] * [Jul]) [Jul Min], Max([Serie number] * [Jul]) [Jul Max],
Min([Serie number] * [Aug]) [Aug Min], Max([Serie number] * [Aug]) [Aug Max],
Min([Serie number] * [Sep]) [Sep Min], Max([Serie number] * [Sep]) [Sep Max],
Min([Serie number] * [Oct]) [Oct Min], Max([Serie number] * [Oct]) [Oct Max],
Min([Serie number] * [Nov]) [Nov Min], Max([Serie number] * [Nov]) [Nov Max],
Min([Serie number] * [Dec]) [Dec Min], Max([Serie number] * [Dec]) [Dec Max]
From test
Inner Join diagonal_matrics On test.[Month] = diagonal_matrics.[Month]
Group By [Serie]