0

データベースBからの選択で埋められたデータベースAにビューを作成しようとしていますが、照合の競合が発生しています. (コード内の) どこに照合を配置する必要がありますか?

よろしくお願いします。

コードは次のとおりです。

CREATE VIEW [dbo].[CML_SDG_MENSAL_ESTOQUE]
AS

select  
SUM(dw_fato_faturmes.val_fatur) val_fatur, 
SUM(dw_fato_faturmes.val_receita) val_receita, 
SUM(dw_fato_faturmes.qtd_bonif_item) qtd_bonif_item, 
SUM(dw_fato_faturmes.val_bonif_fatur) val_bonif_fatur,
SUM(dw_fato_faturmes.val_bonif_receita) val_bonif_receita,
SUM(dw_fato_faturmes.val_devol_fatur) val_devol_fatur,
SUM(dw_fato_faturmes.val_devol_receita) val_devol_receita,
DW_DIM_PRODUTO.B1_CODDB B1_CODDB,
dw_fato_faturmes.cod_produto cod_produto, 
SUM(dw_fato_faturmes.qtd_estoque) qtd_estoque, 
SUM(dw_fato_faturmes.qtd_devol) qtd_devol, 
SUM(dw_fato_faturmes.qtd_item) qtd_item, 
SUM(dw_fato_faturmes.qtd_meta) qtd_meta,
SUM(dw_fato_faturmes.qtd_pedido) qtd_pedido,
SUM(dw_fato_faturmes.qtd_item)+
    SUM(dw_fato_faturmes.qtd_bonif_item)+
    SUM(dw_fato_faturmes.qtd_devol) venda_liquida
(SUM(dw_fato_faturmes.qtd_item)
     +SUM(dw_fato_faturmes.qtd_bonif_item)
    +SUM(dw_fato_faturmes.qtd_devol))
    +SUM(dw_fato_faturmes.qtd_pedido) venda___pedido
FROM 
logixbi.dbo.dw_fato_faturmes dw_fato_faturmes, 
logixbi.dbo.DW_DIM_CLIENTE DW_DIM_CLIENTE, 
DW_DIM_EMPRESA DW_DIM_EMPRESA, 
logixbi.dbo.DW_DIM_MARCA DW_DIM_MARCA, 
logixbi.dbo.DW_DIM_PRODUTO DW_DIM_PRODUTO, 
logixbi.dbo.DW_DIM_REPRESENTANTE DW_DIM_REPRESENTANTE

where 
DW_DIM_EMPRESA.SM0_FILIAL=dw_fato_faturmes.filial and
DW_DIM_MARCA.BM_GRUPO=dw_fato_faturmes.grupo and
DW_DIM_PRODUTO.B1_COD=dw_fato_faturmes.cod_produto and
DW_DIM_REPRESENTANTE.A3_COD=dw_fato_faturmes.vendedor and
DW_DIM_CLIENTE.A1_COD=dw_fato_faturmes.cliente and
DW_DIM_CLIENTE.A1_LOJA=dw_fato_faturmes.loja

group by DW_DIM_PRODUTO.B1_CODDB,dw_fato_faturmes.cod_produto
4

4 に答える 4

4

どの列にどの照合があるかを見つけるには、次のスニペットを使用します。

SELECT name, collation_name
  FROM sys.columns
  WHERE OBJECT_ID IN (SELECT OBJECT_ID
                        FROM sys.objects
                       WHERE type = 'U'
                         AND name = 'your_table_name'
                      )
    AND name = 'your_column_name'

列が見つかったら、これを試してください:

column_1 COLLATE your_collation = column_2 COLLATE your_collation

グローバルに単一の照合に固執することをお勧めします。そうしないと、問題が発生します。COLLATIONこれは、データベース内の列とは異なる、データベース上のすべての列を提供するスニペットです

SELECT [TABLE_NAME] = OBJECT_NAME([id]),
       [COLUMN_NAME] = [name],
       [COLLATION_NAME] = collation
  FROM syscolumns
 WHERE collation <> 'your_database_collation_type'
   AND collation IS NOT NULL
   AND OBJECTPROPERTY([id], N'IsUserTable')=1
于 2012-08-23T13:54:45.690 に答える
1

どこに置くかは、競合がどこにあるかによって異なります。

結合についてお勧めします

すなわち

DW_DIM_EMPRESA.SM0_FILIAL COLLATE Latin1_General_CI_AS =dw_fato_faturmes.filial COLLATE Latin1_General_CI_AS 
于 2012-08-23T13:54:07.653 に答える
0

where句のすべての文字一致条件でこれを使用してみてください:

colnameA COLLATE Latin1_General_CI_AS = columnnameB COLLATE Latin1_General_CI_AS
于 2012-08-23T13:53:10.097 に答える