2

このサブクエリは SQL Server で機能します。

select systemUsers.name, 
    (select count(id) 
     from userIncidences 
     where idUser = systemUsers.id ) 
from systemUsers

SQL Compact でどのように作成できますか?

ありがとう!

4

4 に答える 4

10

現在の行と前の行のデータを使用する計算列を含める必要がある場合など、サブクエリを回避できない場合があります。たとえば、次のクエリを検討してください。

SELECT     
     (Current.Mileage - Last.Mileage)/Quantity as MPG
FROM         
     GasPurchases AS Current
     LEFT OUTER JOIN GasPurchases AS Last
     ON Last.Date =
        (SELECT MAX(PurchaseDate)
        FROM GasPurchases
        WHERE PurchaseDate < Current.PurchaseDate)

解析エラーが発生します。

SQL 実行エラー。

エラー ソース: SQL Server Compact ADO.NET データ プロバイダー エラー メッセージ: クエリの解析中にエラーが発生しました。

回避策がある MSDN のこのスレッドを見つけました。スカラー値ではなくセットを返すようにサブクエリを変更することで、次のクエリを保存して実行することができました。

SELECT     
     (Current.Mileage - Last.Mileage)/Quantity as MPG
FROM         
     GasPurchases AS Current
     LEFT OUTER JOIN GasPurchases AS Last
     ON Last.Date IN
        (SELECT MAX(PurchaseDate)
        FROM GasPurchases
        WHERE PurchaseDate < Current.PurchaseDate)
于 2009-03-15T16:02:20.313 に答える
9

これを試して:

SELECT su.Name, COUNT(ui.ID)
FROM systemUsers su
LEFT JOIN userIncidences ui ON ui.idUser = su.ID
GROUP BY su.Name

[編集:]
私はもともと Tomalak と同じように INNER JOIN を持っていましたが、これは 0 カウントで表示するのではなく、インシデントのないユーザーを除外することに気付きました。それはあなたが望むものかもしれませんが、それはあなたのオリジナルと一致しません.

于 2009-01-22T17:19:17.990 に答える
0

ありがとう、DoctaJonez、あなたの小さな投稿が私のサブクエリで最も役立つことがわかりました。構文は SQL Server Compact v3.5 で動作するようです。これが私が試したクエリです(これは機能します)。

ちなみに、表示されるハードコードされた値 (38046) は、クエリの実行時にわかっています。

insert into tLink (start,stop,associativeobject,linktype,id,name,guid,createTime,modifyTime,externalID,description,linkLabel,LinkDetails)
select newtable.id,stop,associativeobject,linktype,newtable.id,name,guid,createTime,modifyTime,externalID,description,linkLabel,LinkDetails from tLink l, (select id, '38046' as newid from tObject Where name = 'Step 1' and id <> '38046') as newtable
where l.start = newtable.newid and start in (38046)
于 2009-09-23T07:59:16.917 に答える
-1

このようなもの?(Northwind.Order Details を使用)

コード スニペット:

SELECT     [Unit Price] * Quantity AS Cost,

[Unit Price] * Quantity * 1.25 AS CostWithVAT
FROM         [Order Details]

ソース 航空会社予約システム プロジェクト

于 2014-03-07T10:46:08.630 に答える