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
テーブル定義内の列の照合順序を設定してください。 – ventik
はい、1つは選択ですが、データベースが非常に巨大で、多くのアプリがそれに取り組んでいますので少しリスクがあります。 @ventik – saulyasar
SQL Serverの設定を顧客のものと等しくなるように変更します。おそらく、同じ設定でSQL Serverのインスタンスを個別に作成する価値があります。 – ventik