3

最近、アドホッククエリでかなり長い結合を構築していますが、結合が機能した後、selectステートメントにすべてのフィールド名を入力するのは非常に面倒です。結合されたクエリのすべてのフィールド名をリストする簡単な方法はありますか?selectステートメントに対して実行するクエリ、またはこれを行うためのキーコマンドはありますか?

たとえば、以下の結合にはおそらく約30のフィールドがあります。'*'スターから拡張するためにそれらのクイックリストを取得できれば、不要なものを取り除くことができます。

SELECT *
FROM [DB].[THINGS].[QLINKS] Q
JOIN [DB].[THINGS].[POINTS] RQ
    ON Q.ID = RQ.POINT_ID
JOIN [DB].[THINGS].[REFERENCES] R
    ON RQ.POINT_ID = R.ID
JOIN SA_MEMBERSHIP.DBO.ASPNET_USERS U
    ON U.USERID = R.PERSON_ID
JOIN SA_MEMBERSHIP.DBO.ASPNET_MEMBERSHIP M
    ON M.USERID = U.USERID
WHERE NOT Q.ID IN (
        SELECT RQ.QLINK_ID
        FROM [DB].[DATA].[ENTRIES] E
        JOIN [DB].[THINGS].[REFERENCES] R
            ON E.PERSON_ID = R.PERSON_ID
        JOIN [DB].[THINGS].[POINTS] RQ
            ON R.ID = RQ.POINT_ID
        WHERE (
                ITEMKEY LIKE '102_0%'
                OR ITEMKEY LIKE '104_0%'
                )
            AND E.POINT_ID IS NULL
        GROUP BY E.PERSON_ID, LEFT(ITEMKEY, 5), R.ID, RQ.QLINK_ID
        )
4

2 に答える 2

2

次のようなもの(tsqlバージョン、結果セットのメタデータを使用するというアイデア)カーソルcをクエリとします

declare c cursor for select * from sys.databases
go
open c


DECLARE @Report CURSOR;
declare @cn sysname
declare @op int
declare @ccf int
declare @cs int
declare @dts smallint
declare @cp tinyint
declare @colsc tinyint
declare @orp int
declare @od varchar(1)
declare @hc smallint
declare @cid int
declare @oid int
declare @dbid int
declare @dbn sysname

exec sp_describe_cursor_columns @cursor_return = @Report out, @cursor_source = N'global', @cursor_identity = N'c';

declare @res nvarchar(max)
set @res = '';

FETCH NEXT from @Report into @cn, @op, @ccf, @cs, @dts, @cp, @colsc, @orp, @od, @hc, @cid, @oid, @dbid, @dbn;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    set @res = @res +',' + @cn
   FETCH NEXT from @Report into @cn, @op, @ccf, @cs, @dts, @cp, @colsc, @orp, @od, @hc, @cid, @oid, @dbid, @dbn;
END

print stuff(@res, 1, 1, '')

CLOSE @Report;
DEALLOCATE @Report;
GO

close c
deallocate c
于 2013-01-30T09:11:09.440 に答える
0

そのためのプラグインがあることがわかりました!プラグインApexSQLリファクタリングにはこれが無料であります。

ここに直接リンク:http://www.apexsql.com/sql_tools_refactor.aspx

由緒あるPinalDaveがここで説明しています:http://blog.sqlauthority.com/2014/07/24/sql-server-how-to-format-and-refactor-your-sql-code-directly-in-ssms-および-visual-studio/

于 2015-03-30T15:57:37.850 に答える