アップデート:
xml を coldfusion のクエリ テーブルに変換したので、これが解決に役立つかもしれません。
だから私のデータは次のとおりです。
[id] | [code] | [desc] | [supplier] | [name] | [price]
------------------------------------------------------
1 | ABCDEF | "Tst0" | "XYZ" | "Test" | 123.00
2 | ABCDXY | "Tst1" | "XYZ" | "Test" | 130.00
3 | DCBAZY | "Tst2" | "XYZ" | "Tst2" | 150.00
ここで必要なのは、linq to xml クエリが以下に出力するものです。出力は次のようになります (入力しやすいように JSON で記述します)。
[{
"code": "ABCD",
"name": "Test",
"products":
{
"id": 1,
"code": "ABCDEF",
"desc": "Tst0",
"price": 123.00
},
{
"id": 2,
"code": "ABCDXY",
"desc": "Tst1",
"price": 130.00
}
},
{
"code": "DCBA",
"name": "Tst2",
"products":
{
"id": 3,
"code": "DCBAZY",
"desc": "Tst2",
"price": 150.00
}
}]
ご覧のとおり、「CODE」と「Supplier」コードの最初の 4 文字でグループ化します。
ありがとう
次の LINQ to XML クエリを SQL に変換するにはどうすればよいですか?
from q in query
group q by new { Code = q.code.Substring(0, 4), Supplier = q.supplier } into g
select new
{
code = g.Key.Code,
fullcode = g.FirstOrDefault().code,
supplier = g.Key.Supplier,
name = g.FirstOrDefault().name,
products = g.Select(x => new Product { id = x.id, c = x.code, desc = string.IsNullOrEmpty(x.desc) ? "Description" : x.desc, price = x.price })
}
私が思いつくことができる最高のもの:
SELECT c, supplier, n
FROM products
GROUP BY C, supplier, n
そこにサブクエリを取得する方法や、コードの部分文字列を取得する方法がわかりません。
ps: これは coldfusion 用なので、SQL のバージョンは ms sql とは異なる可能性があると思います。