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
我正在使用 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