Select(来自字段Table的Select字段)来自Table

Select (Select field from FieldTable) from Table

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

Table一个

- ID DOVKOD
- 1  KURSATIS

TableB

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

TableA只有1条记录

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

相同的结果

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

在 MySQL 中执行此操作的唯一方法是使用准备好的语句。 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;

您必须使用动态 TSQL

SELECT @column=DOVKOD from Table A

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

如果我没理解错,那么在 table A 中,您有想要 return 的列的名称。那么你的解决方案就很糟糕了。我宁愿做这样的事情:

    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

您可以简单地使用 CASE 表达式:

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

SQL Fiddle Demo here