SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS [英] SQL Error Turkish_CI_AS and SQL_Latin1_General_CP1_CI_AS

查看:138
本文介绍了SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,对于那些长时间的查询:)



我在SQL SERVER 2008中有这样的查询。这是工作。

  SELECT C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2 AS'TEKLIF' 
C.MUS_K_ISIM,CONVERT(VARCHAR(10),B.ISL_TAR,103)AS'TARIH',SUM(
ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ ISNULL B.FAIZ AS FLOAT),0)+
ISNULL(CAST(B.BSMV AS FLOAT),0)+ ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
ISNULL 0))AS'YATAN',
(CASE WHEN C.DOVIZ_KOD = 21 THEN'EUR'WHEN C.DOVIZ_KOD = 2 THEN'USD'WHEN C.DOVIZ_KOD = 1 THEN'TL 'END)AS'KUR',D.T_SR_ACK

来自TAKIP A,YAZ..MARDATA.BIR_TAHSIL B,
YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D

WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
AND B.TEKLIF_NO2 = C.TEKLIF_NO2
AND A.T_HESAP_NO = C.HESAP_NO
AND A.T_SRM = D.T_SR_ID
AND A.T_STATU = 2
AND A.T_SRM<> 6
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2,C.MUS_K_ISIM,B.ISL_TAR,C.DOVIZ_KOD,D.T_SR_ACK

但是,当我对这样的查询进行少许修改时;

  SELECT E.HESAP,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS'TEKLIF',
E.MUSTERI,CONVERT(VARCHAR(10),B.ISL_TAR, TARIH',SUM(
ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ ISNULL(CAST(B.FAIZ AS FLOAT),0)+
ISNULL ),0)+ ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0))AS'YATAN',
.DOVIZ_KOD = 21 THEN'EUR'WHEN C.DOVIZ_KOD = 2 THEN'USD'WHEN C.DOVIZ_KOD = 1 THEN'TL'END)AS'KUR',
E.AVUKAT,CONVERT(VARCHAR(10), A.ICRA_TAR,103)AS'İCRATARİHİ',CONVERT(VARCHAR(10),A.HACIZ_TAR,103)AS'HACİZTARİHİ'
FROM TAKIP A,YAZ..MARDATA.BIR_TAHSIL B,
YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D,AVUKAT E
WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
AND B.TEKLIF_NO2 = C.TEKLIF_NO2
AND A.T_HESAP_NO = C.HESAP_NO
AND C.HESAP_NO = B.HESAP_NO
AND B.HESAP_NO = E.HESAP
AND A.T_SRM = D.T_SR_ID
AND A.T_STATU = 2
AND A.T_SRM<> 6
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD,E.HESAP,E.MUSTERI,E.AVUKAT,A.ICRA_TAR,A.HACIZ_TAR

我收到这样的错误

 消息468,级别16,状态9,行16 
在等于操作中无法解决Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS之间的排序规则冲突。任何人都有这个错误的想法?

p> Regards,Soner

解决方案

我想你需要通过表达式复制你的组中的collat​​e子句:

  SELECT E.HESAP,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS'TEKLIF',
E.MUSTERI ,CONVERT(VARCHAR(10),B.ISL_TAR,103)AS'TARIH',SUM(
ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ ISNULL 0)+
ISNULL(CAST(B.BSMV AS FLOAT),0)+ ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
ISNULL(CAST(B.GECIKME_BSMV AS FLOAT) 0))AS'YATAN',
(CASD WHEN C.DOVIZ_KOD = 21 THEN'EUR'WHEN C.DOVIZ_KOD = 2 THEN'USD'WHEN C.DOVIZ_KOD = 1 THEN'TL'END)AS'KUR' ,
E.AVUKAT,CONVERT(VARCHAR(10),A.ICRA_TAR,103)AS'İCRATARİHİ',CONVERT(VARCHAR(10),A.HACIZ_TAR,103)AS'HACİZTARİHİ'
From TAKIP A,YAZ..MARDATA.BIR_TAHSIL B,
YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D,AVUKAT E
WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
AND B.TEKLIF_NO2 = C.TEKLIF_NO2
AND A.T_HESAP_NO = C.HESAP_NO
AND C.HESAP_NO = B.HESAP_NO
AND B.HESAP_NO = E.HESAP
AND A.T_SRM = D. T_SR_ID
AND A.T_STATU = 2
AND A.T_SRM<> 6
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD,E.HESAP,E.MUSTERI,E.AVUKAT,A.ICRA_TAR,A .HACIZ_TAR


First, sorry for those long queries :)

I have query in SQL SERVER 2008 like this. And this is working.

SELECT C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',
    C.MUS_K_ISIM,CONVERT(VARCHAR(10),B.ISL_TAR,103) AS 'TARIH', SUM(
    ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(B.FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.BSMV AS FLOAT),0)+ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
    (CASE WHEN C.DOVIZ_KOD = 21 THEN 'EUR' WHEN C.DOVIZ_KOD = 2 THEN 'USD' WHEN C.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR', D.T_SR_ACK

    FROM TAKIP A, YAZ..MARDATA.BIR_TAHSIL B, 
    YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D

    WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
    AND B.TEKLIF_NO2 = C.TEKLIF_NO2
    AND A.T_HESAP_NO = C.HESAP_NO
    AND A.T_SRM = D.T_SR_ID
    AND A.T_STATU = 2
    AND A.T_SRM <> 6
        GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2, C.MUS_K_ISIM,B.ISL_TAR,C.DOVIZ_KOD, D.T_SR_ACK

BUT, when i made little changing on this query like this;

SELECT E.HESAP, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS 'TEKLIF',
    E.MUSTERI,CONVERT(VARCHAR(10),B.ISL_TAR,103) AS 'TARIH', SUM(
    ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(B.FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.BSMV AS FLOAT),0)+ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
    (CASE WHEN C.DOVIZ_KOD = 21 THEN 'EUR' WHEN C.DOVIZ_KOD = 2 THEN 'USD' WHEN C.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
    E.AVUKAT, CONVERT(VARCHAR(10),A.ICRA_TAR,103) AS 'İCRA TARİHİ', CONVERT(VARCHAR(10),A.HACIZ_TAR,103) AS 'HACİZ TARİHİ'
    FROM TAKIP A, YAZ..MARDATA.BIR_TAHSIL B, 
    YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D, AVUKAT E
    WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
    AND B.TEKLIF_NO2 = C.TEKLIF_NO2
    AND A.T_HESAP_NO = C.HESAP_NO
    AND C.HESAP_NO = B.HESAP_NO
    AND B.HESAP_NO = E.HESAP
    AND A.T_SRM = D.T_SR_ID
    AND A.T_STATU = 2
    AND A.T_SRM <> 6
GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD, E.HESAP, E.MUSTERI, E.AVUKAT, A.ICRA_TAR, A.HACIZ_TAR

I getting an error like this

Msg 468, Level 16, State 9, Line 16
Cannot resolve the collation conflict between "Turkish_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

Anybody have an idea for this error?

Regards, Soner

解决方案

I think you need to replicate your collate clause in your group by expression also:

SELECT E.HESAP, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS 'TEKLIF',
    E.MUSTERI,CONVERT(VARCHAR(10),B.ISL_TAR,103) AS 'TARIH', SUM(
    ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(B.FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.BSMV AS FLOAT),0)+ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
    (CASE WHEN C.DOVIZ_KOD = 21 THEN 'EUR' WHEN C.DOVIZ_KOD = 2 THEN 'USD' WHEN C.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
    E.AVUKAT, CONVERT(VARCHAR(10),A.ICRA_TAR,103) AS 'İCRA TARİHİ', CONVERT(VARCHAR(10),A.HACIZ_TAR,103) AS 'HACİZ TARİHİ'
    FROM TAKIP A, YAZ..MARDATA.BIR_TAHSIL B, 
    YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D, AVUKAT E
    WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
    AND B.TEKLIF_NO2 = C.TEKLIF_NO2
    AND A.T_HESAP_NO = C.HESAP_NO
    AND C.HESAP_NO = B.HESAP_NO
    AND B.HESAP_NO = E.HESAP
    AND A.T_SRM = D.T_SR_ID
    AND A.T_STATU = 2
    AND A.T_SRM <> 6
GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD, E.HESAP, E.MUSTERI, E.AVUKAT, A.ICRA_TAR, A.HACIZ_TAR

这篇关于SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆