2017-08-22 14 views
0

私のアプリケーションでSQL設定が 'Latin1_General_100_CI_AS'という大きな問題を抱えていますが、私たちの顧客照合は 'Georgian_Modern_Sort_CI_AS'なので、いくつかのクエリを実行すると多くの問題が発生しますが、問題がピボットUnPivot SQL照会の照合

しかし

を解くように、我々はいくつかのピボット& UNPIVOTクエリを持っているとクエリはまだ問題を返すことはnvarchar値「COLLATE Latin1_General_100_CI_AS」キーワードのクエリで使用しています。

解決方法はありますか?

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 
+0

テーブル定義内の列の照合順序を設定してください。 – ventik

+0

はい、1つは選択ですが、データベースが非常に巨大で、多くのアプリがそれに取り組んでいますので少しリスクがあります。 @ventik – saulyasar

+0

SQL Serverの設定を顧客のものと等しくなるように変更します。おそらく、同じ設定でSQL Serverのインスタンスを個別に作成する価値があります。 – ventik

答えて

0

私はテーブルを宣言するときに私は私の問題が解決入れたときにそこに照合を置くことを忘れてしまいました。

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 
) 

ありがとうございました!