如何解决在Microsoft SQL Server Management Studio 17中创建视图会返回错误但查询本身可以工作
我正在尝试在Microsoft SQL Server Management Studio 17中创建我的第一个视图。我基本上只遵循以下步骤中所述的几个步骤: https://docs.microsoft.com/en-us/sql/relational-databases/views/create-views?view=sql-server-ver15
然后,我粘贴了之前准备好的select语句,该语句可以正常工作并且没有任何错误。但是用于视图创建者的返回错误: “ CONCAT函数需要2个参数, 关键字“ AS”附近的语法不正确
我想知道执行查询时是否可以使用任何功能,但是在创建视图时不应该使用。还是为此目的使用的语法应该不同?
由于错误消息提到了concat()函数,因此以下是在我的select语句中使用concat()的示例:
concat('r-',year(getdate())-YEAR(A.DATA))
cast(concat(substring(C.KOD_SEZONU,3,4)+1,'-03-31') as date)
原始的选择语句:
SELECT
C.KOD_SEZONU,substring(C.KOD_SEZONU,1,2) SEZON,CASE
WHEN C.KOD_SEZONU ='PERMAN' THEN 'REGULAR'
WHEN SUBSTRING(C.KOD_SEZONU,2)='JZ' AND A.DATA <= cast(concat(substring(C.KOD_SEZONU,'-03-31') as date) THEN 'REGULAR'
WHEN SUBSTRING(C.KOD_SEZONU,2)='WL' AND A.DATA <= cast(concat(substring(C.KOD_SEZONU,4),'-09-30') as date) THEN 'REGULAR'
ELSE 'OUTLET' END KOLEKCJA,YEAR(A.DATA) ROK,MONTH(A.DATA) MC,DATEPART(ISO_WEEK,A.DATA) TYD,cast(concat(YEAR(A.DATA),'_',RIGHT('00'+CAST(MONTH(A.DATA) AS VARCHAR(2)),2)) as varchar(7)) ROK_MC,cast(CONCAT(
(CASE
WHEN DATEPART(ISO_WEEK,A.DATA)>50 AND MONTH(A.DATA)=1 THEN YEAR(A.DATA)-1
WHEN DATEPART(ISO_WEEK,A.DATA)=1 AND MONTH(A.DATA)=12 THEN YEAR(A.DATA)+1
ELSE YEAR(A.DATA) END),RIGHT('00'+CAST(DATEPART(ISO_WEEK,A.DATA) AS VARCHAR(2)),2)) as varchar(7)) ROK_TYD,CASE
when MONTH(A.DATA) <4 and month(getdate())<4 then concat('r-',year(getdate())-YEAR(A.DATA))
when MONTH(A.DATA) <4 and month(getdate())>=4 then concat('r-',year(getdate())+1-YEAR(A.DATA))
when MONTH(A.DATA) >=4 and month(getdate())<4 then concat('r-',year(getdate())-1-YEAR(A.DATA))
when MONTH(A.DATA) >=4 and month(getdate())>=4 then concat('r-',year(getdate())+1-1-YEAR(A.DATA))
else 'x' end ROK_B,A.LOKALIZACJA,e.SHOP_REGION,E.POSTAL_CODE,E.TYP_SKLEPU,E.KATEGORIA_SKLEPU_LATO KATEGORIA_SKLEPU,CASE WHEN C.NR_REFERENCJI IN('5CD687','5CD999','5CD855','5ED950','5ED951','5ED952') THEN 'PUDEŁKA'
WHEN C.NR_REFERENCJI IN('REKLAM') THEN 'REKLAMÓWKI'
WHEN C.MODEL LIKE'TORBA PAPIER%' THEN 'TORBY PAP.'
WHEN C.NR_REFERENCJI IN('56O637') OR C.MODEL LIKE'BON%' THEN 'BONY'
WHEN C.NR_REFERENCJI LIKE '2 GAT%' OR C.MODEL LIKE '2 GAT%' THEN '2 GATUNEK'
WHEN SUBSTRING(A.ID_POZYCJI_MAG,1) IN('D','M') THEN SUBSTRING(A.ID_POZYCJI_MAG,1)
WHEN REPLACE(C.NR_REFERENCJI,' ','')='' OR C.NR_REFERENCJI IS NULL THEN 'INNE'
ELSE SUBSTRING(C.NR_REFERENCJI,1) END ASO,C.MODEL,substring(a.ID_POZYCJI_MAG,9) as REFCO,C.NR_REFERENCJI,D.KOLOR_KOD,c.WZOR_KOD_DOSTAWCY,link.produkt_link link,D.ROZMIAR,C.KOD_LINII,C.DOSTAWCA,C.KRAJ_POCHODZENIA,cast(CONCAT(YEAR(MIN(CASE WHEN E.KATEGORIA_SKLEPU_LATO IN('A','B','C') AND A.LOKALIZACJA NOT IN('S269','S777') AND A.KONTRAHENT IN('S5','S6') AND A.TYP_DOKUMENTU_MAG IN('MM+ ') THEN A.DATA ELSE NULL END)),RIGHT('00'+CAST(MONTH(MIN(CASE WHEN E.KATEGORIA_SKLEPU_LATO IN('A','S6') AND A.TYP_DOKUMENTU_MAG IN('MM+ ') THEN A.DATA ELSE NULL END)) AS VARCHAR(2)),2)) as varchar(7)) WEJSCIE_ROK_MC,RIGHT('00'+CAST(DATEPART(WEEK,MIN(CASE WHEN E.KATEGORIA_SKLEPU_LATO IN('A',2)) as varchar(7)) WEJSCIE_ROK_TYD,CAST(MIN(CASE WHEN E.KATEGORIA_SKLEPU_LATO IN('A','S6') AND A.TYP_DOKUMENTU_MAG IN('MM+ ') THEN A.DATA ELSE NULL END) AS DATE) WEJSCIE_SKLEP_DATA,CAST(MIN(CASE WHEN A.LOKALIZACJA IN('FOT') AND A.TYP_DOKUMENTU_MAG IN('MM+ ') THEN A.DATA ELSE NULL END) AS DATE) WEJSCIE_FOT_DATA,CENNIK.CENA_I CENA_I_BRUTTO,CENNIK.CENA_AKT CENA_AKT_BRUTTO,max(A.KOSZT_MAGAZYNOWY) KJ,CASE
WHEN A.TYP_DOKUMENTU_MAG IN('KMS ','KMK ','PZ ','PZI ','PZISC','ZPZ ','PZC ','WSC ','PW ','KMK ','KMS ','PKU ') THEN 'DOSTAWA_ZEW'
WHEN A.TYP_DOKUMENTU_MAG IN('MM+ ','KM- ','KM+ ') THEN 'DOSTAWA_WEW'
WHEN A.TYP_DOKUMENTU_MAG IN('WZ ','ZW ','WZT ','BONSP') THEN 'SPRZEDAŻ_SPRZEDAŻ'
WHEN A.TYP_DOKUMENTU_MAG IN('ZW ') THEN 'SPRZEDAŻ_ZWROT'
WHEN A.TYP_DOKUMENTU_MAG IN('INW ','INW+ ','PL ') THEN 'INWENTARYZACJA'
WHEN A.TYP_DOKUMENTU_MAG IN('RWW ') THEN 'ZUŻYCIE_WEW'
WHEN A.TYP_DOKUMENTU_MAG IN('MM- ','KMM- ') THEN 'WYCOFANIE_WEW'
ELSE 'NN' END TYP_TRANSAKCJI,CASE
WHEN E.KATEGORIA_SKLEPU_LATO IN('A','S777') THEN 'SKLEPY_REGULARNE'
WHEN E.KATEGORIA_SKLEPU_LATO IN('O') AND A.LOKALIZACJA NOT IN('S269','S777') THEN 'SKLEPY_OUTLETOWE'
WHEN E.KATEGORIA_SKLEPU_LATO IN('E') AND A.LOKALIZACJA NOT IN('S269','S777') THEN 'SKLEPY INTERNETOWE'
WHEN A.LOKALIZACJA IN('S5','S6') THEN 'MAGAZYNY'
WHEN (E.KATEGORIA_SKLEPU_LATO NOT IN('A','C','O','E') OR A.LOKALIZACJA IN('S269','S777')) THEN 'POZOSTAŁE'
ELSE 'NN' END LOKALIZACJA_GRUPA,SUM(A.ILOSC*(CASE WHEN A.KIERUNEK_TRANSAKCJI='-' THEN -1 ELSE 1 END) ) TRANSAKCJA_ILOŚĆ,SUM(A.ILOSC*(CASE WHEN A.KIERUNEK_TRANSAKCJI='-' THEN -1 ELSE 1 END)*CENNIK.CENA_I/1.23 ) TRANSAKCJA_WART_NETTO_I_CENA,SUM(A.ILOSC*(CASE WHEN A.KIERUNEK_TRANSAKCJI='-' THEN -1 ELSE 1 END)*A.T_KWOTA_NETTO ) TRANSAKCJA_WART_NETTO,SUM(A.ILOSC*(CASE WHEN A.KIERUNEK_TRANSAKCJI='-' THEN -1 ELSE 1 END)*KOSZT.KOSZT_MAX ) TRANSAKCJA_KOSZT
FROM PBH_BI.DBO.RAPTOR_TRANSAKCJE_MAGAZYNOWE_TAB A
LEFT JOIN PBH_BI.DBO.RAPTOR_POZYCJE_MAGAZYNOWE_TAB D ON A.FIRMA = D.FIRMA AND A.ID_POZYCJI_MAG = D.ID_POZYCJI_MAG
LEFT JOIN PBH_BI.DBO.RAPTOR_REFERENCJE_TAB C ON D.FIRMA = C.FIRMA AND C.ID_REFERENCJI = D.ID_REFERENCJI
LEFT JOIN PBH_BI.DBO.T_RAPTOR_SKLEPIKI_INFO_TAB E ON A.LOKALIZACJA = E.SHOP
LEFT JOIN PBH_BI.DBO.T_RAPTOR_SKLEPIKI_INFO_TAB E2 ON A.KONTRAHENT = E2.SHOP
INNER JOIN
(SELECT DISTINCT
X.NR_REFERENCJI,X.KOLOR,X.KOD_SEZONU,AKT.CENA CENA_AKT,I.CENA CENA_I
FROM
(select DISTINCT
CPT.NR_REFERENCJI,CPT.KOLOR,REF.KOD_SEZONU,MIN(CPT.PRIORYTET_CENNIK) AKT_PRIORYTET_CENNIK,MAX(CASE WHEN CT.TYP_CENNIKA = 'GLOWNY' THEN CPT.ID_CENNIKA ELSE '0' END) I_PRIORYTET_CENNIK
from PBH_BI.DBO.RAPTOR_ZK_CENNIK_POZYCJE_TAB CPT
left JOIN PBH_BI.DBO.RAPTOR_POZYCJE_MAGAZYNOWE_TAB REF ON REF.NR_REFERENCJI = CPT.NR_REFERENCJI AND REF.KOLOR_KOD = CPT.KOLOR
left JOIN PBH_BI.dbo.RAPTOR_ZK_CENNIK_TAB CT ON CT.ID_DOKUMENTU = CPT.ID_CENNIKA AND CT.FIRMA = CPT.FIRMA AND CT.KOD_SEZONU = REF.KOD_SEZONU
--WHERE CPT.WAZNY_OD <'20200101'
GROUP BY CPT.ID_REFERENCJI,CPT.NR_REFERENCJI,REF.KOD_SEZONU) X
LEFT JOIN PBH_BI.DBO.RAPTOR_ZK_CENNIK_POZYCJE_TAB AKT ON X.NR_REFERENCJI = AKT.NR_REFERENCJI AND X.KOLOR = AKT.KOLOR AND X.AKT_PRIORYTET_CENNIK = AKT.PRIORYTET_CENNIK
LEFT JOIN PBH_BI.dbo.RAPTOR_ZK_CENNIK_TAB AKT2 ON AKT2.ID_DOKUMENTU = AKT.ID_CENNIKA AND AKT2.FIRMA = AKT.FIRMA AND AKT2.KOD_SEZONU = X.KOD_SEZONU
LEFT JOIN PBH_BI.DBO.RAPTOR_ZK_CENNIK_POZYCJE_TAB I ON X.NR_REFERENCJI = I.NR_REFERENCJI AND X.KOLOR = I.KOLOR AND X.I_PRIORYTET_CENNIK = I.ID_CENNIKA
LEFT JOIN PBH_BI.dbo.RAPTOR_ZK_CENNIK_TAB I2 ON I2.ID_DOKUMENTU = I.ID_CENNIKA AND I2.FIRMA = I.FIRMA AND I2.KOD_SEZONU = X.KOD_SEZONU
) CENNIK
ON CENNIK.NR_REFERENCJI = C.NR_REFERENCJI AND CENNIK.KOLOR = D.KOLOR_KOD AND CENNIK.KOD_SEZONU = C.KOD_SEZONU
LEFT JOIN
(SELECT DISTINCT
SUBSTRING(ID_POZYCJI_MAG,6) REFERENCJA,SUBSTRING(ID_POZYCJI_MAG,7,3) KOLOR,MAX(KOSZT_MAGAZYNOWY) KOSZT_MAX
FROM PBH_BI.DBO.RAPTOR_TRANSAKCJE_MAGAZYNOWE_TAB A
GROUP BY
SUBSTRING(ID_POZYCJI_MAG,6),3)) KOSZT ON KOSZT.REFERENCJA=C.NR_REFERENCJI AND D.KOLOR_KOD = KOSZT.KOLOR
left join
(select distinct
substring(sku,9) refco,produkt_link
from
pbh_bi.dbo.dim_magento_product) link on link.refco = substring(a.ID_POZYCJI_MAG,9)
WHERE
C.KOD_SEZONU IN('JZ2016','JZ2017','JZ2018','JZ2019','JZ2020','JZ2021','WL2016','WL2017','WL2018','WL2019','WL2020','WL2021','PERMAN')
--AND A.DATA ='20200810'
--AND substring(a.ID_POZYCJI_MAG,9) ='4JL004831'
GROUP BY
C.KOD_SEZONU,'-09-30') as date) THEN 'REGULAR'
ELSE 'OUTLET' END,YEAR(A.DATA),MONTH(A.DATA),A.DATA),2)) as varchar(7)),year(getdate())+1-1-YEAR(A.DATA))
else 'x' end,E.KATEGORIA_SKLEPU_LATO,'5ED952') THEN 'PUDEŁKA'
WHEN C.NR_REFERENCJI IN('REKLAM') THEN 'REKLAMÓWKI'
WHEN C.MODEL LIKE'TORBA PAPIER%' THEN 'TORBY PAP.'
WHEN C.NR_REFERENCJI IN('56O637') OR C.MODEL LIKE'BON%' THEN 'BONY'
WHEN C.NR_REFERENCJI LIKE '2 GAT%' OR C.MODEL LIKE '2 GAT%' THEN '2 GATUNEK'
WHEN SUBSTRING(A.ID_POZYCJI_MAG,'M') THEN SUBSTRING(A.ID_POZYCJI_MAG,'')='' OR C.NR_REFERENCJI IS NULL THEN 'INNE'
ELSE SUBSTRING(C.NR_REFERENCJI,1) END,9),link.produkt_link,CENNIK.CENA_I,CENNIK.CENA_AKT,'KMM- ') THEN 'WYCOFANIE_WEW'
ELSE 'NN' END,'S777')) THEN 'POZOSTAŁE'
ELSE 'NN' END
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。