хочу запрос SQL, который дает мне имя столбца, который содержит определенные данные - PullRequest
0 голосов
/ 11 января 2012

У меня есть пять столбцов с типом данных int. Я выбрал строку на основе первичного ключа, но теперь в этой строке я хочу выбрать конкретный столбец с именем, значение которого меньше некоторого значения int полученного столбца.

USE [MedicalLabDB]

GO

/****** Object: Table [dbo].[Advance_Sub_Tests] Script Date: 01/11/2012 15:33:11 ******/
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO

CREATE TABLE [dbo].[Advance_Sub_Tests]
  (
     [Advance_Sub_Test_ID]           [INT] IDENTITY(1, 1) NOT NULL,
     [Sub_Test_ID]                   [INT] NULL,
     [L_Bound_M_LessThan_First_Age ] [FLOAT] NULL,
     [U_Bound_M_LessThan_First_Age ] [FLOAT] NULL,
     [L_Bound_M_LessThan_Second_Age] [FLOAT] NULL,
     [U_Bound_M_LessThan_Second_Age] [FLOAT] NULL,
     [L_Bound_M_LessThan_Third_Age]  [FLOAT] NULL,
     [U_Bound_M_LessThan_Third_Age]  [FLOAT] NULL,
     [L_Bound_M_LessThan_Fourth_Age] [FLOAT] NULL,
     [U_Bound_M_LessThan_Fourth_Age] [FLOAT] NULL,
     [L_Bound_M_LessThan_Fifth_Age]  [FLOAT] NULL,
     [U_Bound_M_LessThan_Fifth_Age]  [FLOAT] NULL,
     [L_Bound_F_LessThan_First_Age]  [FLOAT] NULL,
     [U_Bound_F_LessThan_First_Age]  [FLOAT] NULL,
     [L_Bound_F_LessThan_Second_Age] [FLOAT] NULL,
     [U_Bound_F_LessThan_Second_Age] [FLOAT] NULL,
     [L_Bound_F_LessThan_Third_Age]  [FLOAT] NULL,
     [U_Bound_F_LessThan_Third_Age]  [FLOAT] NULL,
     [L_Bound_F_LessThan_Fourth_Age] [FLOAT] NULL,
     [U_Bound_F_LessThan_Fourth_Age] [FLOAT] NULL,
     [L_Bound_F_LessThan_Fifth_Age]  [FLOAT] NULL,
     [U_Bound_F_LessThan_Fifth_Age]  [FLOAT] NULL,
     [First_Age]                     [INT] NULL,
     [Second_Age]                    [INT] NULL,
     [Third_Age]                     [INT] NULL,
     [Fourth_Age]                    [INT] NULL,
     [Fifth_Age]                     [INT] NULL,
     [Test_Active]                   [BIT] NULL,
     [Version]                       [TIMESTAMP] NULL,
     CONSTRAINT [PK_Advance_Sub_Test_1] PRIMARY KEY CLUSTERED (
     [Advance_Sub_Test_ID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  )
ON [PRIMARY]  

у меня есть эта таблица, я хочу выбрать имя столбца (которое относится к первому возрасту, второму возрасту, третьему возрасту, четвертому возрасту, пятому возрасту), значение которого должно быть равно <20 (я уже выбрал конкретную строку) </p>

1 Ответ

1 голос
/ 11 января 2012

Если я вас правильно понимаю, вы хотите получить имя столбца в результате.

Попробуйте это:

select top(1) Age.ColumnName
from Advance_Sub_Tests as AST
  cross apply (
               select 1, 'First_Age',  AST.First_Age  union all
               select 2, 'Second_Age', AST.Second_Age union all
               select 3, 'Third_Age',  AST.Third_Age  union all
               select 4, 'Fourth_Age', AST.Fourth_Age union all
               select 5, 'Fifth_Age',  AST.Fifth_Age
              ) as Age(Sortorder, ColumnName, ColumnValue)
where AST.Advance_Sub_Test_ID = 1 and 
      Age.ColumnValue < 20
order by Age.Sortorder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...