从表中选择(从FieldTable中选择字段)

时间:2015-02-19 14:36:42

标签: sql-server view

我正在使用MSQL 2005.我有2个table.A和B

表A

- ID DOVKOD
- 1  KURSATIS

表B

- ID KURALIS KURSATIS
- 1  2,2522  2,2685
- 2  2,4758  2,4874

表A只有1条记录

当我执行Select (Select DOVKOD from Table A) from Table B时,我想获得与Select KURSATIS from Table B

相同的结果

我将在视图中使用它。我怎样才能做到这一点。感谢..

4 个答案:

答案 0 :(得分:1)

您只需使用CASE表达式:

SELECT CASE WHEN (SELECT DOVKOD FROM A) = 'KURSATIS' THEN KURSATIS
            ELSE KURALIS
       END     
FROM B

SQL Fiddle Demo here

答案 1 :(得分:0)

在MySQL中如何做到这一点的唯一方法是使用Prepared语句。 Dynamic pivot tables (transform rows to columns)是关于此的好文章。

SET @sql = NULL;
Select DOVKOD INTO @sql
FROM from Table A;

SET @sql = CONCAT('SELECT ', @sql, 'FROM Table B');

PREPARE stmt FROM @sql;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

答案 2 :(得分:0)

您必须使用Dynamic TSQL

SELECT @column=DOVKOD from Table A

EXEC ('Select ' + @column +  ' from Table B')

答案 3 :(得分:0)

如果我理解你,那么在表A中你有你想要返回的列的名称。然后你的解决方案很糟糕。我宁愿做那样的事情:

    CREATE TABLE #TableA
(
    ID INT, DOVKOD VARCHAR(100)
);

INSERT INTO #TableA VALUES (1, 'KURSATIS');
CREATE TABLE #TableB
(
    ID INT, Value DECIMAL (18,2),Name VARCHAR(100)
);

INSERT INTO #TableB VALUES (1, 2.2522 , 'KURALIS');
INSERT INTO #TableB VALUES (2, 2.4758 , 'KURSATIS');

SELECT #TableB.* FROM #TableB JOIN  #TableA ON #TableA.DOVKOD = #TableB.Name