2015-11-04 78 views
-3

通過使用此查詢我可以得到我想要的結果,但現在有另一個有問題的while條件。如何使用條件選擇查詢

SELECT distinct 
    concat([Segment_0], '-' , [Segment_1], '-',[Segment_2]) As 'AcctCode', 
    T1.[AcctName], 
    T2.[Name], 
    concat(T3.[Code],'-',T3.[Name]), 
    T0.[DebLTotal] AS 'ANNUAL BUDGET KSH', 
    T0.[DebRLTotal] AS 'UTILISED BUDGET', 
    T3.[Name] , 
    T3.[Code], 
    (T0.[DebLTotal] - T0.[DebRLTotal]) AS 'BALANCE BUDGET', 
    (SELECT concat(T3.Code , '-', T3.[Name]) WHERE T3.SegmentId = '1') AS 'Project', 
    (SELECT concat(T3.Code , '-', T3.[Name]) WHERE T3.SegmentId = '2') AS 'Distt' 
FROM 
    OBGT T0 
INNER JOIN 
    OACT T1 ON T0.[AcctCode] = T1.[AcctCode] 
INNER JOIN 
    OBGS T2 ON T0.[Instance] = T2.[AbsId] 
INNER JOIN 
    OASC T3 ON (T3.SegmentId = '1' AND T3.Code = [Segment_1]) 
       OR (T3.SegmentId = '2' AND T3.Code = [Segment_2]) 

如果我把conditionwhere子句中像Project = '100' and Distt = '001',它給我的數據。它應該在那裏。

concat([Segment_0], '-' , [Segment_1], '-', [Segment_2]) 

也應根據病情,因爲我們正在加入SegmentId到這些列改變。

請幫

USE [RCTP_NGO] 
GO 
/****** Object: Table [dbo].[OACT] Script Date: 06/Nov/2015 4:28:56 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[OACT](
    [AcctCode] [nvarchar](15) NOT NULL, 
    [AcctName] [nvarchar](100) NULL, 
    [CurrTotal] [numeric](19, 6) NULL, 
    [EndTotal] [numeric](19, 6) NULL, 
    [Finanse] [char](1) NULL, 
    [Groups] [nvarchar](8) NULL, 
    [Budget] [char](1) NULL, 
    [Frozen] [char](1) NULL, 
    [Free_2] [char](1) NULL, 
    [Postable] [char](1) NULL, 
    [Fixed] [char](1) NULL, 
    [Levels] [smallint] NULL, 
    [ExportCode] [nvarchar](10) NULL, 
    [GrpLine] [int] NULL, 
    [FatherNum] [nvarchar](15) NULL, 
    [AccntntCod] [nvarchar](15) NULL, 
    [CashBox] [char](1) NULL, 
    [GroupMask] [smallint] NULL, 
    [RateTrans] [char](1) NULL, 
    [TaxIncome] [char](1) NULL, 
    [ExmIncome] [char](1) NULL, 
    [ExtrMatch] [int] NULL, 
    [IntrMatch] [int] NULL, 
    [ActType] [char](1) NULL, 
    [Transfered] [char](1) NULL, 
    [BlncTrnsfr] [char](1) NULL, 
    [OverType] [char](1) NULL, 
    [OverCode] [nvarchar](8) NULL, 
    [SysMatch] [int] NULL, 
    [PrevYear] [char](1) NULL, 
    [ActCurr] [nvarchar](3) NULL, 
    [RateDifAct] [nvarchar](15) NULL, 
    [SysTotal] [numeric](19, 6) NULL, 
    [FcTotal] [numeric](19, 6) NULL, 
    [Protected] [char](1) NULL, 
    [RealAcct] [char](1) NULL, 
    [Advance] [char](1) NULL, 
    [CreateDate] [datetime] NULL, 
    [UpdateDate] [datetime] NULL, 
    [FrgnName] [nvarchar](100) NULL, 
    [Details] [nvarchar](254) NULL, 
    [ExtraSum] [numeric](19, 6) NULL, 
    [Project] [nvarchar](20) NULL, 
    [RevalMatch] [char](1) NULL, 
    [DataSource] [char](1) NULL, 
    [LocMth] [char](1) NULL, 
    [MTHCounter] [int] NULL, 
    [BNKCounter] [int] NULL, 
    [UserSign] [smallint] NULL, 
    [LocManTran] [char](1) NULL, 
    [LogInstanc] [int] NULL, 
    [ObjType] [nvarchar](20) NULL, 
    [ValidFor] [char](1) NULL, 
    [ValidFrom] [datetime] NULL, 
    [ValidTo] [datetime] NULL, 
    [ValidComm] [nvarchar](30) NULL, 
    [FrozenFor] [char](1) NULL, 
    [FrozenFrom] [datetime] NULL, 
    [FrozenTo] [datetime] NULL, 
    [FrozenComm] [nvarchar](30) NULL, 
    [Counter] [int] NULL, 
    [Segment_0] [nvarchar](20) NULL, 
    [Segment_1] [nvarchar](20) NULL, 
    [Segment_2] [nvarchar](20) NULL, 
    [Segment_3] [nvarchar](20) NULL, 
    [Segment_4] [nvarchar](20) NULL, 
    [Segment_5] [nvarchar](20) NULL, 
    [Segment_6] [nvarchar](20) NULL, 
    [Segment_7] [nvarchar](20) NULL, 
    [Segment_8] [nvarchar](20) NULL, 
    [Segment_9] [nvarchar](20) NULL, 
    [FormatCode] [nvarchar](210) NULL, 
    [CfwRlvnt] [char](1) NULL, 
    [ExchRate] [char](1) NULL, 
    [RevalAcct] [nvarchar](15) NULL, 
    [LastRevBal] [numeric](19, 6) NULL, 
    [LastRevDat] [datetime] NULL, 
    [DfltVat] [nvarchar](8) NULL, 
    [VatChange] [char](1) NULL, 
    [Category] [int] NULL, 
    [TransCode] [nvarchar](4) NULL, 
    [OverCode5] [nvarchar](8) NULL, 
    [OverCode2] [nvarchar](8) NULL, 
    [OverCode3] [nvarchar](8) NULL, 
    [OverCode4] [nvarchar](8) NULL, 
    [DfltTax] [nvarchar](8) NULL, 
    [TaxPostAcc] [char](1) NULL, 
    [AcctStrLe] [nvarchar](2) NULL, 
    [MeaUnit] [nvarchar](10) NULL, 
    [BalDirect] [nvarchar](4) NULL, 
    [UserSign2] [smallint] NULL, 
    [PlngLevel] [nvarchar](2) NULL, 
    [MultiLink] [char](1) NULL, 
    [PrjRelvnt] [char](1) NULL, 
    [Dim1Relvnt] [char](1) NULL, 
    [Dim2Relvnt] [char](1) NULL, 
    [Dim3Relvnt] [char](1) NULL, 
    [Dim4Relvnt] [char](1) NULL, 
    [Dim5Relvnt] [char](1) NULL, 
    [AccrualTyp] [char](1) NULL, 
    [DatevAcct] [int] NULL, 
    [DatevAutoA] [char](1) NULL, 
    [DatevFirst] [char](1) NULL, 
    [SnapShotId] [int] NULL, 
    [PCN874Rpt] [char](1) NULL, 
    [SCAdjust] [char](1) NULL, 
    [BPLId] [int] NULL, 
    [BPLName] [nvarchar](100) NULL, 
    [SubLedgerN] [nvarchar](60) NULL, 
    [VATRegNum] [nvarchar](32) NULL, 
    [ActId] [nvarchar](210) NOT NULL, 
    [ClosingAcc] [nvarchar](15) NULL, 
    [PurpCode] [nvarchar](2) NULL, 
    [RefCode] [nvarchar](30) NULL, 
    [U_COR_FIN_Cls] [nvarchar](32) NULL, 
CONSTRAINT [OACT_PRIMARY] PRIMARY KEY CLUSTERED 
(
    [AcctCode] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
SET ANSI_PADDING OFF 
GO 
/****** Object: Table [dbo].[OASC] Script Date: 06/Nov/2015 4:28:57 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[OASC](
    [SegmentId] [smallint] NOT NULL, 
    [Code] [nvarchar](20) NOT NULL, 
    [Name] [nvarchar](100) NULL, 
    [ShortName] [nvarchar](10) NULL, 
    [UserSign] [smallint] NULL, 
CONSTRAINT [OASC_PRIMARY] PRIMARY KEY CLUSTERED 
(
    [SegmentId] ASC, 
    [Code] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
/****** Object: Table [dbo].[OBGS] Script Date: 06/Nov/2015 4:28:57 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[OBGS](
    [AbsId] [int] NOT NULL, 
    [Name] [nvarchar](100) NOT NULL, 
    [BaseId] [int] NULL, 
    [InitRate] [numeric](19, 6) NULL, 
    [Locked] [char](1) NULL, 
    [FinancYear] [datetime] NOT NULL, 
    [IsMain] [char](1) NULL, 
    [DataSource] [char](1) NULL, 
    [RoundSys] [smallint] NULL, 
    [UserSign] [smallint] NULL, 
    [OcrCode] [nvarchar](8) NULL, 
    [OcrCode2] [nvarchar](8) NULL, 
    [OcrCode3] [nvarchar](8) NULL, 
    [OcrCode4] [nvarchar](8) NULL, 
    [OcrCode5] [nvarchar](8) NULL, 
    [PrjCode] [nvarchar](20) NULL, 
    [U_COR_OcrCode] [nvarchar](200) NULL, 
    [U_COR_PrjCode] [nvarchar](200) NULL, 
CONSTRAINT [OBGS_PRIMARY] PRIMARY KEY CLUSTERED 
(
    [AbsId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
SET ANSI_PADDING OFF 
GO 
/****** Object: Table [dbo].[OBGT] Script Date: 06/Nov/2015 4:28:57 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[OBGT](
    [AbsId] [int] NOT NULL, 
    [AcctCode] [nvarchar](15) NOT NULL, 
    [BgdCode] [int] NULL, 
    [FatherCode] [nvarchar](15) NULL, 
    [FthrPrcnt] [numeric](19, 6) NULL, 
    [DebLTotal] [numeric](19, 6) NULL, 
    [CredLTotal] [numeric](19, 6) NULL, 
    [DebSTotal] [numeric](19, 6) NULL, 
    [CredSTotal] [numeric](19, 6) NULL, 
    [DebRLTotal] [numeric](19, 6) NULL, 
    [CrdRLTotal] [numeric](19, 6) NULL, 
    [DebRSTotal] [numeric](19, 6) NULL, 
    [CrdRSTotal] [numeric](19, 6) NULL, 
    [FtrIDRLSum] [numeric](19, 6) NULL, 
    [FtrIDRSSum] [numeric](19, 6) NULL, 
    [FtrICRLSum] [numeric](19, 6) NULL, 
    [FtrICRSSum] [numeric](19, 6) NULL, 
    [FtrODRLSum] [numeric](19, 6) NULL, 
    [FtrOCRLSum] [numeric](19, 6) NULL, 
    [FtrODRSSum] [numeric](19, 6) NULL, 
    [FtrOCRSSum] [numeric](19, 6) NULL, 
    [FinancYear] [datetime] NOT NULL, 
    [Instance] [int] NOT NULL, 
    [UserSign] [smallint] NULL, 
    [SCNCounter] [smallint] NULL, 
CONSTRAINT [OBGT_PRIMARY] PRIMARY KEY CLUSTERED 
(
    [AbsId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Finanse] DEFAULT ('N') FOR [Finanse] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Budget] DEFAULT ('N') FOR [Budget] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Frozen] DEFAULT ('N') FOR [Frozen] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Postable] DEFAULT ('Y') FOR [Postable] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Levels] DEFAULT ((2)) FOR [Levels] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_CashBox] DEFAULT ('N') FOR [CashBox] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_GroupMask] DEFAULT ((1)) FOR [GroupMask] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_RateTrans] DEFAULT ('Y') FOR [RateTrans] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_TaxIncome] DEFAULT ('N') FOR [TaxIncome] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_ExmIncome] DEFAULT ('N') FOR [ExmIncome] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_ActType] DEFAULT ('N') FOR [ActType] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Transfered] DEFAULT ('N') FOR [Transfered] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_BlncTrnsfr] DEFAULT ('N') FOR [BlncTrnsfr] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_OverType] DEFAULT ('N') FOR [OverType] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_SysMatch] DEFAULT ((-1)) FOR [SysMatch] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_PrevYear] DEFAULT ('N') FOR [PrevYear] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Protected] DEFAULT ('N') FOR [Protected] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_RealAcct] DEFAULT ('N') FOR [RealAcct] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Advance] DEFAULT ('Y') FOR [Advance] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_RevalMatch] DEFAULT ('N') FOR [RevalMatch] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_DataSource] DEFAULT ('N') FOR [DataSource] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_LocMth] DEFAULT ('Y') FOR [LocMth] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_LocManTran] DEFAULT ('N') FOR [LocManTran] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_LogInstanc] DEFAULT ((0)) FOR [LogInstanc] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_ObjType] DEFAULT ('1') FOR [ObjType] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_ValidFor] DEFAULT ('N') FOR [ValidFor] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_FrozenFor] DEFAULT ('N') FOR [FrozenFor] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Counter] DEFAULT ((0)) FOR [Counter] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_CfwRlvnt] DEFAULT ('N') FOR [CfwRlvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_ExchRate] DEFAULT ('Y') FOR [ExchRate] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_VatChange] DEFAULT ('Y') FOR [VatChange] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_TaxPostAcc] DEFAULT ('N') FOR [TaxPostAcc] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_BalDirect] DEFAULT ('0') FOR [BalDirect] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_MultiLink] DEFAULT ('N') FOR [MultiLink] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_PrjRelvnt] DEFAULT ('N') FOR [PrjRelvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Dim1Relvnt] DEFAULT ('N') FOR [Dim1Relvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Dim2Relvnt] DEFAULT ('N') FOR [Dim2Relvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Dim3Relvnt] DEFAULT ('N') FOR [Dim3Relvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Dim4Relvnt] DEFAULT ('N') FOR [Dim4Relvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_Dim5Relvnt] DEFAULT ('N') FOR [Dim5Relvnt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_AccrualTyp] DEFAULT ('N') FOR [AccrualTyp] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_DatevAutoA] DEFAULT ('N') FOR [DatevAutoA] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_DatevFirst] DEFAULT ('Y') FOR [DatevFirst] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_SnapShotId] DEFAULT ((0)) FOR [SnapShotId] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_PCN874Rpt] DEFAULT ('N') FOR [PCN874Rpt] 
GO 
ALTER TABLE [dbo].[OACT] ADD CONSTRAINT [DF_OACT_SCAdjust] DEFAULT ('N') FOR [SCAdjust] 
GO 
ALTER TABLE [dbo].[OBGS] ADD CONSTRAINT [DF_OBGS_Locked] DEFAULT ('N') FOR [Locked] 
GO 
ALTER TABLE [dbo].[OBGS] ADD CONSTRAINT [DF_OBGS_IsMain] DEFAULT ('N') FOR [IsMain] 
GO 
ALTER TABLE [dbo].[OBGS] ADD CONSTRAINT [DF_OBGS_DataSource] DEFAULT ('N') FOR [DataSource] 
GO 
ALTER TABLE [dbo].[OBGS] ADD CONSTRAINT [DF_OBGS_RoundSys] DEFAULT ((0)) FOR [RoundSys] 
GO 
ALTER TABLE [dbo].[OBGT] ADD CONSTRAINT [DF_OBGT_Instance] DEFAULT ((1)) FOR [Instance] 
GO 

+4

請格式化您的SQL代碼。 – pedram

回答

1

你必須讓它在2份

首先,是創建一個新的視圖

CREATE VIEW [dbo].[View1] 
AS 
SELECT DISTINCT 
         T1.AcctName, T2.Name, T0.DebLTotal AS 'ANNUAL BUDGET KSH', T0.DebRLTotal AS 'UTILISED BUDGET', T3.Name AS Expr1, T3.Code, 
         T0.DebLTotal - T0.DebRLTotal AS 'BALANCE BUDGET', 
          (SELECT  { fn CONCAT(T3.Code, T3.Name) } AS Expr1 
           WHERE  (T3.SegmentId = '1')) AS 'Project', 
          (SELECT  { fn CONCAT(T3.Code, T3.Name) } AS Expr1 
           WHERE  (T3.SegmentId = '2')) AS 'Distt' 
FROM   dbo.OBGT AS T0 INNER JOIN 
         dbo.OACT AS T1 ON T0.AcctCode = T1.AcctCode INNER JOIN 
         dbo.OBGS AS T2 ON T0.Instance = T2.AbsId INNER JOIN 
         dbo.OASC AS T3 ON T3.SegmentId = '1' AND T3.Code = T1.Segment_1 OR T3.SegmentId = '2' AND T3.Code = T1.Segment_2 

GO 

,然後從這一觀點如下

選擇
SELECT  View1.* 
FROM   View1 
WHERE  (Project = N'100') AND (Distt = N'001') 
+0

您的代碼給我錯誤關鍵字'WHERE'附近的語法錯誤。我查了一下,但無法離開它。請檢查 – KaurSukh

+0

它在一個select語句中有很多子查詢的問題。請再次檢查並粘貼。@ Niraj Doshi – KaurSukh

+0

您可以嘗試爲您的內部選擇查詢分配名稱。我已經通過添加AS RES來修改它,然後選擇Project and Distt。如果您有任何問題,請告訴我。由於我沒有你的實際表格,我無法與他們合作。如果您想發佈表結構並在此處提供鏈接,則可以嘗試[SQLFiddle](http://sqlfiddle.com/)。 – Marshal