Pivot UnPivot Sql 查询的排序规则

Collation for Pivot UnPivot Sql queries

我的应用程序有一个大问题,我的 sql 设置是 'Latin1_General_100_CI_AS' 但我们的客户排序规则是 'Georgian_Modern_Sort_CI_AS' 所以当我们执行一些查询时它 returns很多问题,但是当我们在查询 nvarchar 值时使用 'collate Latin1_General_100_CI_AS' 关键字解决了这个问题,所以问题解决了

但是

我们有一些 Pivot 和 UNPIVOT 查询,这些查询仍然 return 有问题。

你知道解决办法吗?

例子

ALTER Procedure [dbo].[Mg_Web_PurchasePerMonths]
(
@Gsm nvarchar(15),
@Year int
)
AS

BEGIN

declare @tbPivot4 table(MshStok varchar(22),

[Jan] money, [Feb] money, [Mar] money, [Apr] money,  [May] money,
[Jun] money, [Jul] money, [Aug] money, [Sep] money,[Oct] money, [Nov] money, 
[Dec] money
)

insert into @tbPivot4
Select MshStok collate Latin1_General_100_CI_AS,isnull([Jan],0) as 
[Jan],isnull([Feb],0) as [Feb],isnull([Mar],0) as [Mar],isnull([Apr],0) as 
[Apr],isnull([May],0) as [May],
isnull([Jun],0) as [Jun],isnull([Jul],0) as [Jul],isnull([Aug],0) as 
[Aug],isnull([Sep],0) as [Sep],isnull([Oct],0) as [Oct],isnull([Nov],0) as 
[Nov],isnull([Dec],0) as [Dec]
From
(
select (select substring(StokNam,0,21) collate Latin1_General_100_CI_AS from 
Stoklar where StokKod = MshStok) collate Latin1_General_100_CI_AS as 
MshStok,(SELECT CONVERT(CHAR(3), DATENAME(MONTH, MshTarih))collate 
Latin1_General_100_CI_AS) as ay,sum(MshTutar) as toplam from Mg_MusHars
inner join Mg_MusCards on MshLoylId = McrIdent
where (McrGsm = @Gsm or @Gsm is null) AND (YEAR(MshTarih) = @Year or @Year 
is null)
group by MshStok,MshTarih
) as gTablo
PIVOT
(
Sum(toplam)
For ay IN ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],
[Nov],[Dec])
)
as p
   SELECT *
   FROM @tbPivot4
   UNPIVOT
   (
     TotalPurchase FOR Months IN ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],
     [Aug],[Sep],[Oct],[Nov],[Dec])
   ) AS UNPVTTable

   END

当我声明 table 时,当我解决我的问题时,我忘了把整理放在那里。

declare @tbPivot4 table(MshStok collate Latin1_General_100_CI_AS varchar(22),

[Jan] money, [Feb] money, [Mar] money, [Apr] money,  [May] money,
[Jun] money, [Jul] money, [Aug] money, [Sep] money,[Oct] money, [Nov] money, 
[Dec] money
)

感谢帮助!