我使用此透视查询创建了此视图:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ws_monatsreport] AS
SELECT *
FROM
(
SELECT a.AdressNrADR,k.monat,p.Id_kopf,a.name + ' '+ a.vorname as Name,p.Artikel, p.Tag,CASE WHEN CAST(p.wert AS VARCHAR(10)) = '' THEN CAST(p.Menge AS VARCHAR(10)) ELSE CAST(p.Wert AS VARCHAR(10)) END AS Menge
FROM ( ( ( ZUS_Monatsreport_Kopf k
LEFT JOIN ZUS_Monatsreport_Pos p ON k.Id = p.Id_Kopf)
LEFT JOIN ADR_Adressen a ON k.Adresse = a.AdressNrADR)
LEFT JOIN ADR_GruppenLink gl ON a.AdressNrADR = gl.AdressNrADR)
LEFT JOIN ADR_Gruppen g ON gl.GruppeADR = g.GruppeADR
)src
pivot
( max(menge)
for tag IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[35])
) piv;
GO
现在我必须从ERP系统中调用此视图。在我们的系统中,我可以编写SQL查询,但问题是[ ]
用于调用ERP内部的参数。
所以,如果我写
SELECT [AdressNrADR],[Monat],[Id_kopf,Name,Artikel],[1],[2] and so on
FROM ws_monatsreport
我收到错误。
有没有办法在不使用[]
的情况下执行此操作?
如果我拿走它们,我就得不到我想要的结果:(
答案 0 :(得分:1)
明确列出您的列而不是*
,并为视图定义中的[1], [2], ...
列指定一些其他名称:
CREATE VIEW [dbo].[ws_monatsreport] AS
SELECT
AdressNrADR
,monat
,Id_kopf
,Name
,Artikel
,[1] AS Tag1
,[2] AS Tag2
,[3] AS Tag3
...
,[35] AS Tag35
FROM
(
SELECT
a.AdressNrADR
,k.monat
,p.Id_kopf
,a.name + ' '+ a.vorname as Name
,p.Artikel
,p.Tag
,CASE WHEN CAST(p.wert AS VARCHAR(10)) = ''
THEN CAST(p.Menge AS VARCHAR(10))
ELSE CAST(p.Wert AS VARCHAR(10)) END AS Menge
FROM
ZUS_Monatsreport_Kopf k
LEFT JOIN ZUS_Monatsreport_Pos p ON k.Id = p.Id_Kopf
LEFT JOIN ADR_Adressen a ON k.Adresse = a.AdressNrADR
LEFT JOIN ADR_GruppenLink gl ON a.AdressNrADR = gl.AdressNrADR
LEFT JOIN ADR_Gruppen g ON gl.GruppeADR = g.GruppeADR
) src
pivot
( max(menge)
for tag IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[35])
) piv;
答案 1 :(得分:0)
数字列名称存在问题。在引用数字列名称时尝试包括表别名:如表1中所示,table.2而不是1,2